什么I think I know so far是CORBA specification本身不允许服务器程序使用的IDL和客户端程序使用的IDL之间的任何差异。CORBA服务器和客户端的IDL之间允许有什么区别?
然而,实际上,某些差异是势必工作(美丽的)普遍,因为底层通信机制是非常可能GIOP(至少IIOP)和一定的差异也必然不经由IIOP检测的。
我喜欢建立的是,只要使用GIOP/IIOP,就可以在服务器和客户端IDL之间普遍使用任意ORB之间的差异。
例如:到目前为止,我承担它的工作原理:
- 任何类型/接口,只要添加到服务器IDL的各类客户IDL知道未触及或任何新的未知类型发送回客户端。
- 将方法添加到服务器端的现有接口 - 客户端应该能够继续使用此接口调用对象,即使他的IDL未列出所述方法。 (这似乎是answered with yes here.)
- 将一个成员添加到结尾的枚举,只要客户端永远不会看到这个新值。
- Add a member to a union,只要客户端永远不会将鉴别符设置为新值就看到此Union类型。
我的目标是去类似的东西,可以在现有的IDL做一个简短的清单来扩展“服务器”有新的东西,而无需重新编译退出客户提供修改后的IDL。
我不认为你应该考虑这一点。它会以眼泪结束。 – EJP
@ejp - 你曾经与corba合作过吗?你是IIOP专家吗? –
我对计算有足够的了解,知道你不应该调情无证和未指明的行为。 – EJP