モジュールを開発する際、複数のモジュールが使用できるサービスを識別します。 このようにしてサービスにてこ入れすることにより、開発サイクルとコストを最小化します。 多数のモジュールによって使用されるサービスがある場合は、 ターゲットがアップグレードされた場合に新規サービスへの切り替えが呼び出しモジュールに対して透過的になるように、呼び出しモジュールをターゲットから分離する必要があります。 このトピックでは、単純な呼び出しモデルと分離された呼び出しモデルを対比して、 分離がどのように役立つかを示す例を提供します。 特定の例について説明しますが、これが、ターゲットからモジュールを分離する唯一の方法というわけではありません。
モジュールを開発する際、その他のモジュールにあるサービスを使用することができます。 これは、モジュールにサービスをインポートしてからそのサービスを呼び出すことによって実行します。 インポートされたサービスは、WebSphere® Integration Developer で、 または管理コンソール内のサービスをバインディングすることによって、 その他のモジュールによってエクスポートされたサービスに「関連付け」られます。『単純な呼び出しモデル』は、このモデルを示しています。
呼び出しモジュールを停止せずに呼び出しのターゲットを変更するには、 呼び出しのターゲットから呼び出しモジュールを分離します。 この場合、モジュールそのものではなくダウンストリーム・ターゲットを変更しているので、 ターゲットの変更中もモジュールが処理を続行できます。 『アプリケーションの分離の例』は、分離によって、 呼び出しモジュールの状況に影響を与えずにターゲットを変更する方法を示します。
単純な呼び出しモデルを使用した場合、 同一のサービスを呼び出す複数のモジュールは、 『単一のサービスを呼び出す複数のアプリケーション』のようになります。 MODA、MODB、および MODC はすべて CalculateFinalCost を呼び出します。
分離を使用して、アプリケーションとターゲットの間でバッファー・モジュールを作成します (『UpdateCalculateFinal を呼び出す分離された呼び出しモデル』を参照してください)。
このモデルで、呼び出しモジュールは変わりません。 実行する必要があるのは、バインディングをバッファー・モジュール・インポートからターゲットへ変更することだけです (『UpdatedCalculateFinal を呼び出す分離された呼び出しモデル』を参照してください)。
バッファー・モジュールがターゲットを同期で呼び出す場合、 元のアプリケーションに戻される結果は、 バッファー・モジュール (メディエーション・モジュール、 またはビジネス・モジュール用のサービス) を再始動したときに、 新規ターゲットから送信されます。 バッファー・モジュールがターゲットを非同期で呼び出す場合、 元のアプリケーションに戻される結果は、次の呼び出し時に新規ターゲットから送信されます。