簡體   English   中英

本地C ++和Java程序之間的通信有哪些好的替代方案?

[英]What are the good alternatives for communication between local C++ and Java programs?

“本地”是指兩者都在同一子網中運行,在大多數情況下是相同的主機/ VM,因此一些標准的跨網絡跨平台RPC機制(如SOAP,XML-RPC,CORBA等)似乎是不必要的。

有效載荷主要是數字(主要是表格)數據,包含從C ++到Java的少量元數據(例如可用數據服務,數據描述/類型等),以及從Java到C ++的控制台/腳本化UI事件。 因此,C ++程序就像客戶端的服務器和Java程序一樣。

我可以列舉幾個選項(主要來自搜索這個精彩的網站),但我從來沒有在真實世界的重型場景中使用或看過一個,所以我真的希望有人“在那里,做到這一點”可以教育我關於選項的利弊。

  1. 共享內存
  2. 管道,stdin / stdout等
  3. 普通套接字上的自定義數據結構(可能是UDP)( 這個問題
  4. 普通套接字上的消息可能是Google協議緩沖區,Thrift,JSON等( 此答案等)
  5. 帶有C ++ RMI服務器的Java RMI( 這個問題
  6. JNI( 這個問題的一些答案)

我很確定我錯過了很多選擇。 感謝大家的幫助!


編輯:我忘了提到性能不是一個主要問題,因為數據吞吐量預計不會很大(服務器嚴重受數據庫限制),但重要的是要知道一個選項是否更快或更慢。 例如,我認為沒有什么比共享內存更好(如果做得對)。

選項3和4用於現實世界的重載情況。

選項1,2,6沒有到達另一個主機。

對於非Java方面,選項5可能太麻煩了。

我選擇選項4,因為選項3太低級別(除非選項4太慢)。 從您列舉的那些中選擇您最喜歡的跨平台輕量級消息傳遞協議。 這些都是“經過實戰考驗”並且擁有大多數語言的庫。

我會選擇4.我會跳過5. 2會很笨重。

我們正在談論將數字作為純文本傳遞,是嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM