1

次の典型的な例でシミュレートできる2つの異なるシステムを設計しています。

Webアプリ#1-コースカタログ(コースカタログの更新/入力を可能にします)

  • 教授
  • コース(courseCode、professorId、前提条件のリスト、使用された成績尺度)
  • 前提条件(courseCodeと最低グレードが必要)
  • GradeScale(つまり、AF、1-100、合格/不合格)

Webアプリ#2-学生カタログ(新しいコースに登録する学生、成績証明書の表示などを処理します)

  • 学生
  • 成績証明書(どのコースを受講し、どの最終成績を取得したか)

2つのシステム間で受け渡す必要のあるデータ(やり取りする必要のある呼び出しやものが増えますが、これにより、質問と回答の双方向の流れであることがわかります):

  1. 学生は特定のコースを受講するために必要な前提条件を持っていますか?
  2. コースカタログから詳細を取得して、完全なトランスクリプトを作成します

読んでみると、私たちの選択肢は次のようです。

  1. 基になるデータモデルのEJBを作成してから、WebアプリケーションにEJBインターフェースを使用させます。
  2. 2つのアプリケーション間でRESTまたはWebサービスインターフェースを使用します。
  3. RMIまたは他のJavaリモーティング?

これをJAR/WAR / EARにどのように分割しますか?

4

1 に答える 1

0

これは最初はコメントでしたが、実際には長すぎます。

単純な命令型サービスしか得られない場合(これを設定しますか、これは有効ですか?)、AXIS2/SOAPベースのWebサービスソリューションを利用できます。(おそらく、SpringWSの肥大化全体は必要ありません)。アプリのロジックがあまりねじれていない場合は、KISSの原則に従います。

システムシナリオはわかりませんが、本格的なRDBMSを使用している場合は、データベースが独自のマシンに存在する可能性が高く、さまざまなプールが接続されているため、それほど大きな負担にはなりません。(各ASでローカルデータベースを使用している場合は、後でスケーラビリティの問題に直面する可能性があります)。

最新のJavaEEアプリサーバーでは、あるサーバーから別のサーバーへの接続プールを実際に使用できます(jnp:// urlsを介して)。これは、JNDIルックアップの問題です。

dbエンジンがそれをサポートしている場合、oracleと同様のdbリンクもアプリ間でデータベースを共有するための良い方法です。

2つのWeb動的プロジェクト間で共有されるすべてのORMを含む単純なJavaプロジェクトにビジネス/データレイヤーを含めることでコード時間を節約できるため、ビジネスロジックの最終的な変更は両方のアプリに反映されます。

混合方法(単純な命令型Webサービスとデータベース共有)を試すこともできます。これは、2つのアプリケーション間で交換されるメッセージによって異なります。WebサービスAPI(SOAPまたはjsonpベース)のレイヤーを提供できますが、Webサービス自体の実行時間を考慮に入れてください(時間のかかるwsがあるのはあまり良くありません)。

WebサービスとEJBは優れており、おそらく必要なことを実行できます。本当の問題は、本当に必要なのかということです。最近、私は完全なRESTのものから始まる多くのプロジェクトを見てきました、そして多くの場合それはバズーカでハエを殺すようなものでした。

要件が単純な場合は、単純に保ちます。

于 2012-11-06T09:07:47.480 に答える