【发布时间】:2012-08-20 17:47:59
【问题描述】:
I think I know so far 是 CORBA specification 本身不允许服务器程序使用的 IDL 和客户端程序使用的 IDL 之间存在任何差异。
但是,在实践中,某些差异必然普遍适用(相当),因为底层通信机制很可能是 GIOP(至少 IIOP)和一些差异一定不能通过 IIOP 检测到。
我想确定的是,只要使用 GIOP/IIOP,服务器和客户端 IDL 之间普遍允许存在哪些差异。
例如:到目前为止,我假设它适用于:
- 向服务器 IDL 添加任何类型/接口,只要不触及客户端 IDL 知道的类型或将任何未知的新类型发送回客户端即可。
- 在服务器端的现有接口中添加一个方法——客户端应该能够继续使用这个接口调用对象,即使他的 IDL 没有列出所述方法。 (这里好像是answered with yes here.)
- 在枚举的结尾添加一个成员,只要客户端永远不会看到这个新值。
- Add a member to a union,只要客户端永远不会看到这种将鉴别器设置为新值的联合类型。
我的目标 是得到一个可以在现有 IDL 中做的事情的简短列表,用新的东西扩展“服务器”,而不必用修改后的 IDL 重新编译现有的客户端。
【问题讨论】:
-
我认为你甚至不应该考虑这个。终会流泪。
-
@ejp - 你曾经使用过 corba 吗?你是 IIOP 方面的专家吗?
-
我对计算有足够的了解,知道您不应该与未记录和未指定的行为调情。
-
@EJP - 好的,谢谢你的信息。我担心你的评论是基于更具体的信息。在这种情况下,虽然我很乐意忽略它。 :-)
-
根据具体信息,Corba 和 IDL 不是为这种事情设计的。