モジュールとターゲットの分離の概要

モジュールを開発する際、複数のモジュールが使用できるサービスを識別します。 このようにしてサービスにてこ入れすることにより、開発サイクルとコストを最小化します。 多数のモジュールによって使用されるサービスがある場合は、 ターゲットがアップグレードされた場合に新規サービスへの切り替えが呼び出しモジュールに対して透過的になるように、呼び出しモジュールをターゲットから分離する必要があります。 このトピックでは、単純な呼び出しモデルと分離された呼び出しモデルを対比して、 分離がどのように役立つかを示す例を提供します。 特定の例について説明しますが、これが、ターゲットからモジュールを分離する唯一の方法というわけではありません。

単純な呼び出しモデル

モジュールを開発する際、その他のモジュールにあるサービスを使用することができます。 これは、モジュールにサービスをインポートしてからそのサービスを呼び出すことによって実行します。 インポートされたサービスは、WebSphere® Integration Developer で、 または管理コンソール内のサービスをバインディングすることによって、 その他のモジュールによってエクスポートされたサービスに「関連付け」られます。『単純な呼び出しモデル』は、このモデルを示しています。
図 1. 単純な呼び出しモデル
この図は、サービス ServiceA を呼び出すアプリケーション MyModule を示しています。
この呼び出しは、
アプリケーション DifferentModule の ServiceA でエクスポート・インターフェースに接続しているアプリケーション内のインポート・インターフェースを指します。

分離された呼び出しモデル

呼び出しモジュールを停止せずに呼び出しのターゲットを変更するには、 呼び出しのターゲットから呼び出しモジュールを分離します。 この場合、モジュールそのものではなくダウンストリーム・ターゲットを変更しているので、 ターゲットの変更中もモジュールが処理を続行できます。 『アプリケーションの分離の例』は、分離によって、 呼び出しモジュールの状況に影響を与えずにターゲットを変更する方法を示します。

アプリケーションの分離の例

単純な呼び出しモデルを使用した場合、 同一のサービスを呼び出す複数のモジュールは、 『単一のサービスを呼び出す複数のアプリケーション』のようになります。 MODA、MODB、および MODC はすべて CalculateFinalCost を呼び出します。
図 2. 単一のサービスを呼び出す複数のアプリケーション
次の図は、CalculateFinalCost を直接呼び出す複数のモジュールを示しています。
CalculateFinalCost によって提供されるサービスは、 そのサービスを使用するすべてのモジュールに新規コストが反映されるように、 更新する必要があります。 開発チームは、新規サービス UpdatedCalculateFinal を構築およびテストして、 変更を取り込みます。 新規サービスは実動に移す準備ができています。 分離を使用しない場合は、UpdateCalculateFinal を呼び出すために、 CalculateFinalCost を呼び出すモジュールをすべて更新する必要があります。 分離を使用した場合、実行する必要があるのは、バッファー・モジュールをターゲットに 接続するバインディングを変更することだけです。
注: このようにサービスを変更することにより、オリジナルのサービスを、それを必要とするその他のモジュールに提供し続けることができます。
分離を使用して、アプリケーションとターゲットの間でバッファー・モジュールを作成します (『UpdateCalculateFinal を呼び出す分離された呼び出しモデル』を参照してください)。
図 3. UpdateCalculateFinal を呼び出す分離された呼び出しモデル
この図は、CalculateFinalCost を呼び出す ModA、ModB、および ModC を示しています。
この呼び出しは、CalculateFinalCost というサービスを含むアプリケーション BufferMod で解決します。
このサービスは、アプリケーション ActualMod で実際の CalculateFinalCost だけを指します。
このモデルで、呼び出しモジュールは変わりません。 実行する必要があるのは、バインディングをバッファー・モジュール・インポートからターゲットへ変更することだけです (『UpdatedCalculateFinal を呼び出す分離された呼び出しモデル』を参照してください)。
図 4. UpdatedCalculateFinal を呼び出す分離された呼び出しモデル
この図は、UpdateFinalCost を指す BufferMod 内の
CalculateFinalCost からのバインディングを示している前の図と似ています。
バッファー・モジュールがターゲットを同期で呼び出す場合、 元のアプリケーションに戻される結果は、 バッファー・モジュール (メディエーション・モジュール、 またはビジネス・モジュール用のサービス) を再始動したときに、 新規ターゲットから送信されます。 バッファー・モジュールがターゲットを非同期で呼び出す場合、 元のアプリケーションに戻される結果は、次の呼び出し時に新規ターゲットから送信されます。
関連情報
ターゲットの変更

(c) Copyright IBM Corporation 2005, 2006. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。