[39.1] IORとはなんですか?
[Recently created (10/1996).
Click here to go to the next FAQ in the "chain" of recent changes]
IORはInteroperable Object Referenceで、特別なオブジェクトリファレンスです。IORはオブジェクトリファレンスと全く同様の方法でアプリケーションから使用されます。 IORによってCORBAオブジェクトへのリモートメソッド呼び出しができます。一旦IORを取得したアプリケーションは、IIOP経由でリモートCORBAオブジェクトにアクセスすることができます。 このようなCORBAオブジェクトはIIOPをサポートするCORBA 2.0 準拠の製品であればインプリメント可能です。 IORを
獲得するアプリケーションは異なったCORBA2.0製品で開発することができます。 アプリケーションはGIOP メッセージを構築し送信します。IORは適切なサーバへ直接メッセージを送るために必要な情報をすべて含んでいます。
Back to the top of section [39]
[39.2] IORはオブジェクトリファレンスと同じような方法で取得されるのですか?
[Recently created (10/1996).
Click here to go to the next FAQ in the "chain" of recent changes]
IORの取得は オブジェクトリファレンスの取得と全く同じです。 ひとつ注意すると、ORB::resolve_initial_referencesはIORを返しますが、しかしこれは普通は同じCORBA製品環境の中で実装されていなければなりません。
Back to the top of section [39]
[39.3] アプリケーションは、複数のCORBA商品により実装されたそれぞれのオブジェクトを参照することができるのですか?
[Recently created (10/1996).
Click here to go to the next FAQ in the "chain" of recent changes]
あるアプリケーションが2つのオブジェクトにアクセスする必要があるとします。オブジェクトAがCORBA製品Aaで実装され、オブジェクトBがCORBA製品Bbで実装されているとします。いくつかのシナリオを見てみましょう:
- フロントエンドアプリケーションがCORBA製品Aaで実装される場合: もっとも単純なアプローチでは、フロントエンドアプリケーションがORB::resolve_initial_references()を呼び出すことでAへのオブジェクトリファレンスを獲得できます。 フロントエンドアプリケーションは製品Aaで実装されるので、ORB::resolve_inital_references() を呼び出しても B へのオブジェクトリファレンスは獲得できません。 文字列化されたBへのオブジェクトリファレンスを得て、ORB::string_to_object() を呼び出すことでそれをIORに変換することができます。 どのようにして文字列化されたオブジェクトリファレンスを得るのでしょう? オブジェクトBのコンストラクタが自分自身を文字列化し、ファイルへその文字列を書き込んでフロントエンドアプリケーションからアクセス可能にするように実装することができます。(アクセス手段はNFSによって提供されるかも知れません) IIOPをサポートする全CORBA製品は ORB::string_to_object() をサポートすべきです。
- フロントエンドアプリケーションがCORBA製品Ccで実装される場合: このシナリオは最初のものと非常に類似しています。 アプリケーションは ORB::resolve_initial_references() は使えません。なぜならオブジェクトAもBも製品Ccでは実装されていないからです。 フロントエンドアプリケーションがAへの IORとBへのIORを得るためには、まずはじめに文字列化されたオブジェクトリファレンスを獲得します。そしてその文字列を ORB::string_to_object() を呼び出して変換します。IIOPをサポートする全CORBA製品は ORB::string_to_object() をサポートすべきです。
- フロントエンドアプリケーションがCORBA製品Ccで実装される場合。 製品CcのCORBAネームサービス実装からAとBのIORを獲得できます。
文字列化されたオブジェクトリファレンスを獲得する必要はありません。本当の疑問は、IOR AとIOR Bがどのようにして製品CcのCORBAネームサービスの中にバインドされるかということです。 オブジェクトAとBを実装する(サーバ)プロセスは、製品CcのCORBAネームサービスへのオブジェクトリファレンスを獲得しなければなりません。これは製品CcのCORBAネームサービスへの文字列化されたオブジェクトリファレンスを獲得することによってのみ可能です。どのようにして製品CcのCORBAネームサービスへの文字列化されたオブジェクトリファレンスは作成されるのでしょうか? 製品Ccで実装された単純なアプリケーションが ORB::resolve_inital_references() を呼び出してネームサービスを獲得し、そして ORB::object_to_string() を呼び出してネームサービスを文字列化します。いったんこれが行われると、オブジェクトAとBを実装するプロセスによって文字列を獲得できるように、そのアプリケーションが文字列を外部化(externalize)します。
注釈: 文字列化されたオブジェクトはCORBAベースの通信を使って交換することはできません。これは古典的なジレンマです
Back to the top of section [39]
[39.4] CORBAベンダーは相互運用性と他のベンダーのオブジェクトリファレンスの取得を簡単にすることができますか?
[Recently created (10/1996).
Click here to go to the next FAQ in the "chain" of recent changes]
外部用(external)IORの生成だけを行なう小さなコードを提供することにより、CORBAベンダーは外部用オブジェクトリファレンスを取得する過程を簡単化することができます。 これは ExternalORB::create_external_references()と呼ばれる関数かもしれません。ベンダーはこのコードを公開するか、他のベンダーに直接提供することができるでしょう。
Back to the top of section [39]
E-mail us
[ CORBA FAQ
| 目次; 詳細目次; アルファベット順
| Subject index
| About the authors
| (C)
| TM
| Wingnest.com ]
Revised Oct 5, 1996 Translated 0ct 24, 1996