我們在Windows上有一個啓動java進程的C++應用程序。這兩個應用程序需要相互通信(通過xml片段)。Windows操作系統環境下C++應用程序與Java應用程序之間的進程間通信
你會選擇什麼進程間通信方法,爲什麼?
對我們來說,桌子上的方法是:共享文件,管道和套接字(雖然我認爲這有一些安全問題)。我接受其他方法。
我們在Windows上有一個啓動java進程的C++應用程序。這兩個應用程序需要相互通信(通過xml片段)。Windows操作系統環境下C++應用程序與Java應用程序之間的進程間通信
你會選擇什麼進程間通信方法,爲什麼?
對我們來說,桌子上的方法是:共享文件,管道和套接字(雖然我認爲這有一些安全問題)。我接受其他方法。
我不確定爲什麼你認爲基於套接字的通信會有安全問題(使用SSL)。它通常是一個非常好的方法,因爲它是語言不可知的,假設您有一個定義明確的通信協議。例如,看看Google的protocol buffers - 它們會生成所需的Java類和流。根據我的經驗,文件系統(特別是網絡文件系統)並不適合於這樣的通信,因爲它們不一定要調整爲消息傳遞(我看到緩存問題導致文件不被目標拾取過程例如)。
另一種選擇是消息圖層(例如,AMQ或Tibco),但這可能會涉及更大的管理開銷(加上專業知識)設置。
就我個人而言,我會選擇純插座方法,因爲它的靈活性和簡單性。您將完全控制。
Ice是很酷:)
我使用C#和一個跨平臺的C++應用程序之間的通信命名管道與己無關,但良好的效果。除非那個插座絕對是要走的路。
套接字很不錯。它們使您能夠非常輕鬆地在每個組件周圍創建一個黑匣子測試層,並在每臺組件上運行每個組件。
安全性絕對值得關注,但根據它的重要性,有很多選擇。您可以使用SSL,自定義握手,密碼保護登錄和防火牆來幫助保護它。
編輯: 不是我推薦的東西,但也有使用JNI的共享內存。只是覺得我會提到它,因爲它不在你的名單上。
你的觀點是關於插座和安全。謝謝。 +1 – 2009-07-30 22:07:40