これまで私が知っていると思うのは、CORBA仕様自体では、サーバープログラムが使用するIDLとクライアントプログラムが使用するIDLの違いは認められていないということです。
ただし、実際には、基礎となる通信メカニズムはおそらくGIOP(少なくともIIOP)であり、一部の違いはIIOPを介して検出できないため、特定の違いは(かなり)普遍的に機能します。
私が確立したいのは、GIOP / IIOPが使用されている限り、サーバーとクライアントのIDL間で任意のORB間で普遍的にどのような違いが許容されるかということです。
例:これまでのところ、次のように機能すると思います。
- クライアントIDLが認識しているタイプが変更されていないか、不明な新しいタイプがクライアントに返送されない限り、サーバーIDLにタイプ/インターフェイスを追加します。
- サーバー側の既存のインターフェースにメソッドを追加します。クライアントは、IDLにメソッドがリストされていなくても、このインターフェースを使用してオブジェクトの呼び出しを続行できる必要があります。(これはここでyesで答えられるようです。)
- クライアントがこの新しい値を決して見ない限り、列挙型の最後にメンバーを追加します。
- 識別子が新しい値に設定されたこのUnionタイプがクライアントに表示されない限り、メンバーをユニオンに追加します。
私の目的は、既存のIDLで実行できるものの短いリストのようなものに到達し、変更されたIDLを使用して既存のクライアントを再コンパイルすることなく「サーバー」を新しいもので拡張することです。