2008-08-31 37 views

回答

4

重新編譯是不是必需的(和不應該,無論您使用的ORB)。正如亞當所指出的,查找是通過操作名稱來完成的(一個直接的文本比較)。 (ACE/TAO C++中的服務器,ACE/TAO C++中的客戶端,使用Borland's Janeva和C++的OmniORBPy)都已經完成了我們基於ACE/TAO系統的描述。 。

+0

我們一直這樣做 - 在枚舉結尾添加方法甚至新值。它像一個魅力! – Fortyrunner 2009-01-22 11:30:33

1

操作(方法)查到的名字,所以你只需要重新編譯使用新操作的客戶端。客戶

3

假定客戶機和服務器通過通信IIOP,則不需要重新編譯。 IIOP消息包含接口的名稱,方法的名稱和參數。如果這些事情都沒有改變,那麼一切都應該保持兼容。向接口添加另一種方法不會改變任何現有的東西。

在另一方面,如果你的對象是使用不同的協議,或者如果客戶端進程與服務器從而繞過IIOP,您可能需要確保一切都被重新編譯。使用託管(即在ORB啓用託管同一進程中運行)

1

客戶端必須重新編譯。遠程客戶端可能保持不變 - 如前所述,方法通過符號名稱進行匹配。

0

這取決於使用新的idl方法。 如果Corba調用是靜態的(SII),意味着您的客戶端與存根連接,那麼如果您想使用新添加的方法接口,則必須重新編譯存根。

如果CORBA調用是動態的(DII),不存在對客戶端所需存根。不需要重新編譯。在這種情況下,您的客戶端代碼應該是這樣的:

 remoteObjRef->invoke("methodname", args); // send("methodname", args) 

我四年前CORBA DII調用,並與陶客戶& TAO/Jacorb/IONA CORBA服務工作。

相關問題