2010-09-05 28 views
0

您可以請教一個使用SoapRMI-C++在應用程序的C++(頂層)和Java(底層)之間發送/接收對象的示例。SOAP RMI C++ - Java和C++通信

請讓我知道它的可行性和實施的複雜性。

感謝, 的Gtk

回答

0

不要。使用類似Protocol Buffers

肥皂是詳細而緩慢的。而當RMI需要幾十秒才能發送的消息變成幾微秒的消息(如果兩個程序在同一個盒子上,或者在同一個局域網上)或甚至幾毫秒發送時,RMI導致糟糕的程序設計。而且它的必要性也傾向於鼓勵客戶端和服務器以相互交織的方式依賴彼此狀態的設計,就像調用者和被調用者在進行普通方法調用時所做的那樣。它鼓勵狀態視界的大小包含客戶端與服務器交談的端到端延遲,這會大大降低服務器速度並導致錯誤。

使用消息傳遞是顯式的技術,鼓勵您專注於通過遠程端執行的操作傳遞的數據。同樣,這指向了諸如Protocol Buffers之類的解決方案。

很久以前我寫了一篇論文,爲什麼RPC (and by extension RMI) was a bad idea。其中我選出了CORBA,但我的大多數論點都適用於幾乎任何形式的RPC。

此外,像Erlang這樣的語言的存在和流行表明,即使對於同一CPU上的不同線程之間的通信,顯式消息傳遞也是好的,因爲延遲和網絡延遲不成問題。這是因爲它大大減少了線程之間的耦合。線程不再需要同意在做某些事情之前總是獲得一個互斥體或類似的東西。單個線程的狀態範圍不再包含系統上其他線程的狀態範圍。它還減少了多個線程想要控制相同的互斥或共享狀態的同步行爲。