分散型のソフトウェアシステムを設計する場合、そのほとんどがカスタム開発コンポーネントで構成されるか、または追加設定の必要ない Java ES コンポーネントで構成されるかにかかわらず、多数のインフラストラクチャーサービスを組み込む必要があります。これらのサービスは、多数のレベルで機能します。
ソリューションアーキテクチャーのインフラストラクチャーサービスの依存関係の次元 を、図 2–2 に示します。この図に示されているレベルは、図 1–1 のインフラストラクチャーサービス層を詳細化したものです。
図 2–2 のサービス階層とサービス間の依存関係が、ソリューションの論理アーキテクチャーの重要な次元を構成します。これらのインフラストラクチャーサービスは、Java ES システムサービスコンポーネント (「システムサービスコンポーネント」を参照) の役割を理解するための概念上の基礎になります。
一般的に、図 2–2 に示したサービスは、大きく 3 つのグループに分けられます。下位レベルのプラットフォームサービス、上位レベルのアプリケーションサービス、およびミドルウェアサービスのグループです。なお、ミドルウェアサービスという名前は、ほかの 2 つのグループの間にあることから付けられたものです。
次の各段落では、さまざまなインフラストラクチャーサービスレベルについて説明し、関連する場合には Java プログラミング言語のアーチファクトの参考情報も示します。図 2–2 に示された各サービスレベルについて、最下位レベルから順に説明します。
オペレーティングシステムプラットフォーム: コンピュータ上で実行されるすべてのプロセスに対し、基本的なサポートを提供します。オペレーティングシステム (SolarisTM オペレーティングシステム、Linux、Microsoft Windows など) は、物理デバイスのほかに、メモリー、スレッド、および JVMTM (Java Virtual Machine) マシンのサポートに必要なその他のリソースを管理します。
ネットワークトランスポート: 異なるコンピュータ上で実行されている分散型アプリケーションコンポーネント間での通信に必要な、基本的なネットワークサポートを提供します。これらのサービスには、TCP や HTTP などのプロトコルに対するサポートも含まれます。上位レベルのその他の通信プロトコル (「メッセージングレベル」を参照) は、これらの基本的なトランスポートサービスに依存しています。
持続: 静的データ (ユーザー、ディレクトリ、設定情報など) と動的アプリケーションデータ (頻繁に更新される情報) の両方に対するアクセスや格納に必要なサポートを提供します。
メッセージング: アプリケーションコンポーネント間の同期および非同期の通信に対するサポートを提供します。同期メッセージングでは、メッセージをリアルタイムで送受信します。 これには、J2EE コンポーネント間のリモートメソッドの呼び出し (RMI) や Web サービスとの SOAP 対話も含まれます。非同期メッセージングの通信では、直後に受信するコンシューマの準備状況に関係なく、メッセージを送信します。JMS (Java Message Service) や ebXML などの非同期メッセージングの仕様では、信頼性の保証およびその他のメッセージング方式をサポートします。
実行時: J2EE モデルや CORBA モデルなどの分散型のコンポーネントモデルで必要となるサポートを提供します。実行時サービスには、密接に結合された分散型コンポーネントに必要なリモートメソッドの呼び出しの他に、コンポーネントの状態 (ライフサイクル) の管理、スレッドプールの管理、同期 (相互排他ロック)、持続サービス、分散するトランザクションの監視、分散する例外の処理などが含まれます。J2EE 環境では、これらの実行時サービスはアプリケーションサーバーまたは Web サーバーの EJBTM、Web、およびメッセージ駆動型 Bean コンテナから提供されます。
セキュリティーとポリシー: アプリケーションリソースへのセキュリティー保護されたアクセスに必要なサポートを提供します。これらのサービスには、グループまたはロールに基づく分散型リソースへのアクセスを制御するポリシーのサポートや、シングルサインオン 機能が含まれます。シングルサインオンを使用すると、ある分散型システム内の 1 つのサービスに対するユーザー認証を、同じシステム内の他のサービス (J2EE コンポーネント、ビジネスサービス、Web サービスなど) に自動的に適用できます。
ユーザーの共同作業: ユーザー間の直接通信およびエンタープライズ内とインターネット環境内でのユーザー間の共同作業に対するサポートで重要な役割を果たすサービスを提供します。これらのサービスは、一般的にスタンドアロンサーバー (電子メールサーバーやカレンダサーバーなど) から提供されるアプリケーションレベルのビジネスサービスです。
統合: 既存のビジネスサービスを集約するサービスを提供します。ポータルと同様にサービスにアクセスするための共通インタフェースを提供するか、これらのサービスを本稼動ワークフロー内で調整するプロセスエンジンを使用し、統合することによって行います。統合は、異なる企業間における企業間 (B2B) 統合として行なわれることもあります。
図 2–2 に示したサービスレベルは、最下位レベルのオペレーティングシステムサービスから最上位レベルのアプリケーションサービスや統合サービスまで、さまざまなインフラストラクチャーサービス間の一般的な依存関係を反映しています。通常、各サービスはその下にあるサービスに依存し、その上にあるサービスをサポートします。
ただし、図 2–2 は、インフラストラクチャーサービスの厳密な階層を表しているわけではありません。上位レベルのサービスは、中間のレベルに依存せずに、下位レベルのサービスと直接対話することができます。たとえば、一部の実行時サービスは、中間にあるサービスレベルを介さずに、プラットフォームサービスに直接依存する場合があります。さらに、監視サービスや管理サービスなどのその他のサービスレベルも、ここでの概念的な説明に含まれることがあります。