[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
あなたのORB内のオブジェクトインスタンスを識別するための一時的で内部が見えないハンドルです。オブジェクトリファレンスはオブジェクトのメソッドを起動するのに必要な識別子です。
オブジェクトリファレンスは分散ネットワーク内の全てのマシンに有効なグローバルな識別子ではありません。オブジェクトリファレンスの有効範囲はあなたのローカルなORBに限定されるのです。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
CORBAは動的な環境であり、オブジェクトはどのように移動されるかわからないものです。静的でこわれやすい位置識別子を用いるよりは、ソフトな位置識別子を用いる必要があるのです。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
あなたのクライアントがORBにコネクトしているセッションの間です。セッションの間に対象のオブジェクトが移動した場合、ORBは自動的にリクエストを転送するメカニズムという等価性を提供します。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
オブジェクトリファレンスを文字列化(stringify)し、それを永続的メディアに保存します。しかし、警告しなければならないのですが、あなたは深みにはまることになってしまいます。“エキスパート”になりたい、と思わないなら、おそらくネームサービスの項に飛んだほうがよいでしょう。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
object_to_string()を用いなさい。そしてその逆の処理にはstring_to_object()を用いなさい。string_to_object()にはいくつかのマジックがあります。必要な文字列からポインタへの変換を行うだけではなく、文字列化された元々のリファレンスと等価で、今現在有効なオブジェクトリファレンスが得られることを保証しているのです(すなわち、両方ともまったく同じオブジェクトのインスタンスを指しているのです)。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
これに関しては標準がないので、言うことができません。能率的でおそらくプラットフォームに依存した体系の開発を可能にするため、OMGはORBの実装にできるだけの自由度を与えようとしています。それゆえ、リファレンスは内部が見えないもので、その実装に関係のないインタフェースを持つものと考えられなければならないのです。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
ライフサイクルサービスのリクエストに応じてBOAが作成するか、またはオブジェクトファクトリが作成します。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
is_equivalent()を使ってください。しかし、あまり本気で使ってはいけません。この方法は、二つのリファレンスが等価だ、と言えば、それは絶対に嘘ではなく、それらは等価なのです。しかし、二つのリファレンスが等価であっても同一でないかもしれず、is_equivalent()は偽を返す可能性があるのです。C++ ReportのSteve VinoskiとDoug Schmidtによる1996年10月のコラムを見てください。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
is_equivalent()は二つのオブジェクトの一方のオブジェクトで起動されることを思い出してください。これはデッドロックを起こす可能性があります。次の例は、サーバがクライアントに対してメソッドを起動することが許されていない、ある特定のシングルスレッドのORBにおいて、デッドロックが起こる様子を示しています(Jeff Stewart jstewart+@andrew.cmu.eduによります。許可をもらって使用します):
サーバがキャッシュされたクライアントから更新メッセージを受け、メッセージを送ってきたクライアント以外の全てのクライアントを更新しなければならないとしましょう(メッセージを送ってきたクライアントを更新することは、このORB上でデッドロックを起こします)。そして、サーバがクライアントのリストを繰り返し処理するとき、メッセージを送ってきたクライアントを起動しないことを保証しなければなりません。しかし、場合によってはis_equivalent()チェックをするために、メッセージを送ってきたクライアントの起動を引き起こし、不注意にデッドロックを作ってしまうので、is_equivalent()は使用することができません。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
いいえ。それは典型的にはネットワークのトラフィックを必要とすることも覚えておかねばなりません。is_equivalent()の処理はORBだけでできる、という希望的考えに陥りやすいのですが、本当はそうではないのです。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
まず、オブジェクトはリファレンスが文字列化された2回の間にオブジェクトは移動したかもしれません。そうすると文字列は同一のものではないでしょう。また、複数のベンダが存在するとき、文字列化されたオブジェクトリファレンスはORBに依存したものなので、潜在的に問題が存在しているのです。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
いいえ、そんなことはありません。長年議論の焦点であった深く哲学的に根差した話題に引き込んでしまいましたが、多くの人はこの手の知識は必要とはしないのです。最初の方で警告したでしょう?その時に、知っておくべきでしたね。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
現実の見地から見ると、このレベルの仕事をせねばならない人にとってでさえ、この考察はあまり生じてこないのです。幸いなことに、多くのユーザはネームサービスを単に使用することができ、(本質的に)名前をあらわす文字列を扱い、上記の複雑さをすべて避けることができるのです。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
あなたがエキスパートになりたいと思っている人だからです。オブジェクトリファレンスを比較するときに2度考えるくらいに意識をあげて欲しいのです。それに、CORBAがあなたの方に少し学習を要求していることを示すよい方法だからです。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
IDLコンパイラがあなたのinterfaceをCORBA_Objectにtypedefするコードを生成してくれます。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
_varと_ptrとの2つの方法があります。_varの後ろにある考え方は自動的にメモリ管理をするところにあります。メモリの割り当てはスタック以外でなされ、オブジェクトリファレンスがスコープの外に出たときにメモリは戻されます。一方、_ptrオブジェクトリファレンスは適切な時にメモリを開放することを含めた特有のメモリ管理を必要とします。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
_varの方がシンプルなので、使えるときには_varを使ってください。普通は性能的な理由で_ptrを使用しなければならないときに_ptrを使ってください。時々、システムにメモリ管理を委ねられないような危険な領域が存在します。大雑把な指針として、木目の細かいオブジェクトが多くあり、タイミングや性能的な問題を把握しているときに、_ptrの使用を検討してください。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
その時は、インタオペラブルオブジェクトリファレンス(IOR)について知る必要があります。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
そうです。なぜなら、それはそもそも異なるベンダのORB間の協力を要求するものだからです。普通のオブジェクトリファレンスはORBの中に存在するものであり、それゆえ標準化された書式を持たねばならない理由はないのです。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
仕様の詳細はOMGのウェブサイトにありますし、たぶんあなたにとっては重要ではないでしょう。しかし、IORがタイプIDと一つ以上のタグ付きプロファイルから構成されることを知っていても損はないでしょう。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
タグとは、IORがそのもともとのORBからあなたのローカルなORBに渡ってきたときに、最も最近受けたプロトコル交換のプロトコルIDを示すもので(ブリッジと相互運用性の詳細に触れるときにそれがなんなのかを議論します)、OMGに登録されているものです。例えば、IIOPのIDは0です。
Back to the top of section [20]
ORBがIORを正しく使うために何を知らねばならないかを他のORBに教えるための効率のいい方法です。single-componentとmultiple-componentの2つの種類があります。両方とも典型的には、トランザクションサービスのようなORBが持っているサービスの存在を表した情報を含んでいます。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
ものによります。プロファイルは、プロトコルを開発し、OMGにそのタグを登録した人によって定義されるものです。IIOPはsingle-componentなプロファイルを使用してますし、DCE CIOPはmultiple-componentなプロファイルを使用してます。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
あなたは、おそらくIORの実例を見ることはないでしょうから、仕様の詳細など必要としないでしょう。それはORBの間の地下世界に存在するものなのです。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
用いないのです。あなたのORBはIORによってあらわされているリモートオブジェクトの局所的な代理(プロキシィ)を作るのです。あなたの全てのプログラムに見えるのは、その代理のオブジェクトリファレンスなのです。ORBは他のすべてのことを引き受けてくれます。
Back to the top of section [20]
[Recently created (9/1996). Click here to go to the next FAQ in the "chain" of recent changes]
懲りない人ですね。その話はまた今度にしましょう。その知識が要るような立場になったら、もうあなたはこの文書を情報源にしていないはずです。今のところは、ネーミングサービスを詳しく勉強しましょう。
Back to the top of section [20]