簡體   English   中英

Java和C#之間的通信

[英]communication between Java and C#

我發現有一個名為GCT的.Net工具包 - Group Communication Toolkit,它是JGroup的C#版本。 我想知道這個和JGroup是否可以連接在一起,以使java和C#客戶端相互通信。 如果沒有,那么使java程序和C#程序進行通信的最佳選擇是什么? 我遇到的另一個選擇是XMPP實現。 我需要在同一台計算機上運行的這兩個程序之間傳遞非常快的消息。 主要要求是,當某些特定事件被觸發時,該程序中的任何一個都會向另一個發送消息。 任何想法都歡迎。

XMPP不是你想要的。 它設計用於在具有中央服務器的計算機之間傳遞消息。

我建議使用套接字在應用程序之間傳遞數據。 請參閱C#中的System.Net.Sockets.Socket類和Java中的java.net.Socket類。

在我工作的地方,我們使用ICE( http://www.zeroc.com/ )。 它允許我們在java和C#之間編組二進制數據。 不算太差。

Google的協議緩沖區可能是一種選擇。 它非常便攜,速度非常快。

回應OP的“回答”......

將“服務器推送”映射到經典RPC模型(例如,由CORBA,SOAP,ICE,RMI等實現)的方法是翻轉角色,以便您認為作為服務器的東西填充客戶端角色RPC。 模式是這樣的:

  1. 您的客戶端調用您的服務器,傳遞回調對象的句柄。

  2. 服務器會記住回調對象並返回。

  3. 客戶入睡(或做其他事......)

稍后,服務器想要推送一些數據。

  1. 服務器調用回調對象上的“推送”RPC,傳遞數據。

  2. 客戶端接收回調對象上的調用/請求,對數據執行某些操作並回復。

如果我這樣做,並且需要低延遲,我可能會考慮內存映射文件或管道。 其中任何一個都需要一些JNI和p / invoke編程。

如果性能很重要,請參閱科學計算中使用的內容。 科學家在企業中遇到了同樣的問題,需要連接客戶端和服務器以及更廣泛的語言和平台。 也許這個名為Babel的組件綁定工具在其原始域之外會有用嗎? 接口由SIDL描述(如CORBA中的IDL),但我不知道C#是否已被覆蓋。 https://computation.llnl.gov/casc/components/babel.html

暫無
暫無

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

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