3.CORBA概要(3)
CORBA 3章 CORBA概要(3)
3.1 オブジェクトのライフサイクルCORBAオブジェクトは、識別子・インタフェース・実装を持った抽象的な要素です。クライアントの観点から見ると、インタフェース型と実装オブジェクトがカプセル化されたオブジェクト参照として表されます。それでは、サーバ側から見てみるとどうでしょうか。CORBAでは、抽象的なオブジェクトと、オブジェクトの機能を実装する具体的なプログラミング言語の実体を区別しています。サーバオブジェクトを作成するためにはインタフェースで定義された機能を実現する実装が必要になります。このオブジェクトを具体的に実装したクラスのことをサーバントクラスといい、そのクラスのインスタンスをサーバントと呼びます。CORBAのアーキテクチャには、抽象的なオブジェクトと具体的なサーバントをバインディングし、受信したサーバオブジェクトに対するリクエストをオブジェクトの実装に対して送信するための仕組みがあります。そのCORBAオブジェクトとサーバントを仲介する役割を持つのがオブジェクトアダプタ(OA)です。 OAの役割を理解するためには、まずCORBAオブジェクトのライフサイクルについて知らなくてはいけません。CORBAオブジェクトにとっては次の2つがライフサイクルの重要なイベントとなります。 生成CORBAオブジェクトのライフサイクルは生成イベントから始まります。通常CORBAオブジェクトは、他のオブジェクト生成用のオペレーションを提供するオブジェクトを介して生成されます。 削除CORBAオブジェクトのライフサイクルは削除イベントをもって終了します。通常、削除されるCORBAオブジェクトには自分自身を削除するようなメソッドがIDLにおいて定義されています。 CORBAオブジェクトはサーバントによって実装されますので、サーバントのライフサイクルについても言及する必要があります。次にサーバントのライフサイクルイベントを2つ定義します。 活性化CORBAオブジェクトへのリクエストを処理するサーバントを利用可能な状態にすることです。これは抽象的なCORBAオブジェクトと具体的なサーバント間の結びつきが確立されることを意味しています。 非活性化CORBAオブジェクトからサーバントを切り離すことです。非活性化にはサーバントの削除が含まれる場合があります。 CORBAオブジェクトの生成・削除と活性化・非活性化は異なります。オブジェクトは生成されたのちに活性化や非活性化され、最後に削除されるのです。場合によっては生成から削除される間に複数回の活性化・非活性化が行われることもありえます。 ![]() 3.2 OA(Object Adapter)OAはORBの機能のひとつであり、サーバオブジェクトを管理する機能を持っています。たとえば、まだ起動していないサーバオブジェクトに対してクライアントから要求があった場合、OAはインプリメンテーションリポジトリからそのサーバオブジェクトの場所や活性化方法を検索し、その情報に基づいてサーバオブジェクトを起動します。OAはORBに登録されているサーバオブジェクトが活性状態にあるか非活性状態にあるかを知っており、必要に応じてサーバオブジェクトの活性化を行うのです。クライアントからのリクエストは全てOAに渡され、OAはサーバオブジェクトが活性状態にあることを確認してからリクエストをサーバオブジェクトに送信します。 ![]() OAはサーバ側のORBの一部となる構成要素であり次のような機能を提供します。ここで、オブジェクトリファレンスとはCORBAオブジェクトを一意に識別するために用いられる参照です。CORBAオブジェクトはオブジェクトIDという番号によって管理されています。(ただしオブジェクトIDをアプリケーション開発者が意識することはありません。)
3.3 BOA (Basic Object Adapter)BOAはCORBA1.0で定義されたOAの仕様で、CORBA2.1まで用いられていました。BOAでは、アプリケーションが効率的にオブジェクトライフサイクルを管理するために必要とされる多くの機能において、仕様が細かいところまで規定されておらず曖昧な点が多く存在します。そのためBOAの実装はORBベンダーにより大きく異なり、それぞれの製品間で互換性がありませんでした。このようにBOAには欠点が多いため現在ではPOAに置き換えられています。 |
![]()
![]()
|