-
概要
- 窓口となるSession Beanを配置することで、ビジネスオブジェクトの複雑さを隠蔽する役割を果たします。
-
問題
- デザインが不適切な多くJ2EEアプリケーションでは、
プレゼンテーション層のコンポーネントは、リモートコールによる
ビジネスロジック層のコンポーネントとのやり取りを大量発生してしまい、その結果
- 性能ネック。大量のリモートコールがネットワーク上を通過するため、
大きなネットワークのトラフィックは性能ネックになります。
- 複雑化。一つの業務を遂行するのに、大量な呼び出しをしてしまい、
その結果システムが複雑になってしまいます。
- 重複コード。ビジネスロジック層のコンポーネントとのやり取りを各プレゼンテーションのコンポーネントに分散してしまうため、
コードの重複が発生します。
- トランザクション管理の分散。粗粒度の業務のワークフローは各プレゼンテーションのコンポーネントに記述しなければならないので、
トランザクション管理は分散してしまいます。
-
解決策
- 一連のワークフローでのビジネスコンポーネントとの複雑なやり取りを隠蔽するために、
窓口(facade)となるSession Beanを配置します。
また、ビジネスオブジェクトを管理し、クライアントに対して一貫した粗粒度のサービス単位を提供します。
- 図
-
メリット
- 低結合度。クライアントとの依存関係を低くなり、低結合度を実現できます。
- 簡素化。クライアントに対して一貫した粗粒度のサービス単位を提供するため、容易に利用できるようになります。
- 性能向上。クライアントからのEJB呼び出し回数が減り、性能ネックとなるネットワークのトラフィックを減少することで、性能向上します。
- トランザクションの一元管理。粗粒度のSession Façadeにトランザクションを集中して管理できます。