更改CORBA接口而无需重新编译

时间:2020-03-05 18:45:40  来源:igfitidea点击:

我想向现有服务器的CORBA接口添加一个方法。是否需要重新编译所有客户端?

我正在使用TAO。

解决方案

回答

操作(方法)按名称查找,因此我们只需要重新编译使用新操作的客户端。

回答

不需要重新编译客户端(无论我们使用的是ORB,都不需要重新编译)。正如亚当指出的那样,查找是通过操作名称完成的(纯文本比较)。

我已经完成了我们使用基于ACE / TAO的系统进行的描述,没有遇到任何问题(服务器使用ACE / TAO C ++,客户端使用ACE / TAO C ++,使用Borland的Janeva和OmniORBPy)。

回答

假设客户端和服务器正在通过IIOP进行通信,则无需重新编译。 IIOP消息包含接口的名称,方法的名称和参数。如果这些事情都没有改变,那么所有内容都应保持兼容。在界面上添加其他方法不会更改任何现有内容。

另一方面,如果对象使用不同的协议,或者客户端正在与服务器一起运行,从而绕过IIOP,则可能需要确保重新编译所有内容。

回答

必须重新编译使用托管的客户端(即在同一进程中运行并在ORB中启用托管的客户端)。远程客户端可能与前面所述的相同,方法由符号名称匹配。