分散コンピューティングでは、ネットワークに接続された複数のコンピュータを使って、クライアントプロセスからサーバプロセスに対して処理の要求を行い、その結果を得る。その結果、クライアントとサーバのプロセスは、密接に関連することになり、お互いに相手を理解しないとアプリケーションの開発や変更ができないことになる。
そこで、CORBAではクライアントとサーバを分離して、相互に他方に影響を及ぼすことなく変更ができるようにしている。つまり、クライアントは要求する方法だけを知っていて、サーバは要求に対して行う処理だけを知っていればよい。
このため、CORBAでは、クライアントとサーバの間にブローカーという通信可能な層を追加し、リクエストというメッセージを交換することで実現している。このリクエストを実行するために、IDL(インタフェース定義言語)を用いて、インターフェースの定義ファイルを作成しておく。
リクエストを発行するオブジェクトの実体であるインスタンスを識別するために、クライアント側でオブジェクトリファレンスが利用される。また、サーバには、クライアントからのリクエストに応えるためのメソッド群が存在し、これをインプリメンテーションと呼んでいる。
CORBA環境における、構成要素間の関係を定義するためにOMA(Object Management Architecture)は図1に示すように5つの要素から構成されている。
- ・アプリケーション・オブジェクト
- アプリケーションを構成するオブジェクトで、アプリケーション開発者が作成する。
- ・ドメイン・オブジェクト
- 特定の業務分野ごとに利用可能なオブジェクト群である。
- ・ファシリティ・オブジェクト
- 特定の業務分野に関係なく、アプリケーションを開発するために利用可能なオブジェクト群。これには、ドキュメント制御の統合、データベースのアクセス、ファイルの印刷、分散環境での同期制御などのファシリティがある。
- ・ORB(Object Request Broker)
- 分散したオブジェクト間の通信を行うためのソフトウェアバスを提供する。
- ・共通オブジェクト・サービス
- CORBAを実現するために必要な機能を提供するオブジェクト群である。主な機能は、オブジェクトの作成、アクセス制御、オブジェクトリファレンスとの連結など。オブジェクトサービスの仕様であるCommon Object Services Specification,Vol1(COSS1)に基づいて、OMGのメンバー企業が各種のオブジェクトサービスを作成している。
- ・ORBコア
- ORBのカーネルで、各要素間のコミュニケーションなどの基本的なサービスを提供する。
- ・インターフェース・リポジトリ
- IDLで定義されたインターフェースのパラメータの型や戻り値などを定義したオブジェクト群。
- ・動的起動インターフェース
- 起動を行うために必要なインターフェース情報をインターフェース・リポジトリから取得し、リクエストを生成する。
- ・ORBインターフェース
- ORBの基本的な機能を提供する。
- ・オブジェクト・アダプタ
- サーバ・オブジェクトの生成、消滅、オペレーションの起動などを行う。
- ・インプリメンテーション・オブジェクト
- オブジェクトの生成や位置を知るために必要な情報を格納する。
- ・IDL
- 異なるプログラム言語で実装されたクライアント/サーバ間で、クライアントからサーバにあるオブジェクトのオペレーションを遠隔起動するために、インターフェースを記述する言語である。
- (この詳しい説明は、基本コンポーネントのページを参照)
ORBを用いたシステムでは、オブジェクト間の呼び出しを「名前」で行う。オブジェクトの位置情報は、CORBAが管理しているので、呼び出す側のオブジェクトAは、呼び出し側のオブジェクトBの位置をORBに問い合わせる。ORBがオブジェクトBの位置を回答すると共に、オブジェクトBの存在するサーバが稼働状態にない場合は、そのサーバーを起動する。
オブジェクトAは、受信した位置情報を用いてオブジェクトBとの間にセッションを張る。
(1)分散オブジェクト管理機能
- Naming Service:オブジェクトの管理、検索
- Event Service:非同期処理のイベントを処理する
- Lifecyle Service:オブジェクトの生成、消滅、複製、移動を行う
- Time Service:時間の管理を行う
- Extermarization Service:オブジェクトのバックアップを行う
- Licensing Service:オブジェクトの配布
(2)データベース管理機能
- Persistent Service:オブジェクトをデータベースに保存する
- Query Service :データベースの問い合わせ
- Transaction Service:トランザクション処理
- Concurrency Control Service:オブジェクトの排他制御
(3)その他
- Relationship Service:オブジェクト間の関係の生成、削除を行う
- Security Service:オブジェクトのセキュリティ
- Properties Service:オブジェクトのプロパティの管理
- Change Management Service:オブジェクトの履歴、構成などの情報を管理
- Collection Service:オブジェクトの集合を管理
- Trading Service:オブジェクトの条件検索を行う
- Startup Service:起動、初期化を行う