什麼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