既存のサーバーのCORBAインターフェイスにメソッドを追加したいと思います。すべてのクライアントを再コンパイルする必要がありますか?
TAOを使用しています。
クライアントの再コンパイルは必要ありません(使用するORBに関係なく、再コンパイルする必要はありません)。Adamが示したように、ルックアップは操作名(テキストの直接比較)によって行われます。
ACE / TAOベースのシステムで説明したことを実行しましたが、問題は発生しませんでした(サーバーはACE / TAO C ++、クライアントはACE / TAO C ++、C#はBorlandのJanevaを使用、OmniORBPy)。
クライアントとサーバーが IIOP を介して通信していると仮定すると、再コンパイルは必要ありません。IIOP メッセージには、インターフェースの名前、メソッドの名前、およびパラメーターが含まれています。それらのいずれも変更されていない場合、すべてが互換性を維持するはずです。インターフェイスに別のメソッドを追加しても、これらの既存のものは変更されません。
一方、オブジェクトが別のプロトコルを使用している場合、またはクライアントがサーバーとインプロセスであり、IIOP をバイパスしている場合は、すべてを再コンパイルする必要があります。
コロケーションを使用している(つまり、ORBでコロケーションが有効になっている同じプロセス内で実行されている)クライアントは、再コンパイルする必要があります。リモートクライアントは同じままである可能性があります-前述のように、メソッドはシンボリック名で照合されます。
操作(メソッド)は名前で検索されるため、新しい操作を使用するクライアントを再コンパイルするだけで済みます。