Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Java与C之间的通信#_C#_Java_Interop_Xmpp - Fatal编程技术网

C# Java与C之间的通信#

C# Java与C之间的通信#,c#,java,interop,xmpp,C#,Java,Interop,Xmpp,我发现有一个名为GCT-Group Communication toolkit的.Net工具包,它是JGroup的C版本。我想知道是否可以将this和JGroup连接在一起,使java和C#clients相互通信。 如果不是,那么让java程序和C#程序通信的最佳选择是什么? 我遇到的另一个选择是XMPP实现。 我需要在同一台计算机上运行的两个程序之间进行非常快速的消息传递。主要要求是,当某些特定事件被触发时,此程序中的任何一个都会向另一个程序发送消息。 欢迎任何想法。XMPP不是您想要的。它是

我发现有一个名为GCT-Group Communication toolkit的.Net工具包,它是JGroup的C版本。我想知道是否可以将this和JGroup连接在一起,使java和C#clients相互通信。 如果不是,那么让java程序和C#程序通信的最佳选择是什么? 我遇到的另一个选择是XMPP实现。 我需要在同一台计算机上运行的两个程序之间进行非常快速的消息传递。主要要求是,当某些特定事件被触发时,此程序中的任何一个都会向另一个程序发送消息。
欢迎任何想法。

XMPP不是您想要的。它是为在有中央服务器的计算机之间传递消息而设计的


我建议使用套接字在应用程序之间传递数据。请参阅C#中的System.Net.Sockets.Socket类和java中的java.Net.Socket类。

在我工作的地方,我们使用ICE()。它允许我们在java和C#之间封送二进制数据。这还不错。

如果性能很重要,那么看看科学计算中使用了什么。科学家们在企业中也遇到了同样的问题,需要在更广泛的语言和平台中连接客户端和服务器等等。也许这个名为Babel的组件连接工具在其原始领域之外会有用?接口是由SIDL描述的(就像CORBA中的IDL),但我不知道C#是否被涵盖

回应OP的“答案”

将“服务器推送”映射到经典RPC模型(例如,由CORBA、SOAP、ICE、RMI等实现)的方法是翻转角色,以便您认为作为服务器的东西填充RPC中的客户机角色。模式如下:

  • 客户端向服务器发出调用,传递回调对象的句柄

  • 服务器记住回调对象并返回

  • 客户进入睡眠状态(或做其他事情…)

  • 稍后,服务器希望推送一些数据

  • 服务器调用回调对象上的“推送”RPC,传递数据

  • 客户机接收回调对象上的调用/请求,对数据进行处理,然后回复


  • 如果我这样做,并且需要低延迟,我可能会考虑内存映射文件或管道。这两种方法都需要一些JNI和p/invoke编程

    谷歌的协议缓冲区可能是一种选择。它非常便携,速度也非常快。

    很明显,您一定已经研究过数据库、Web服务或简单的XMl文件,可能是FileSystemWatcher?我喜欢ICE。我们在工作中使用过它,突然之间,使用不同的语言变得很容易。这几乎就像你如何在网络中混合语言一样。