Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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# 如何在.NET和Java之间创建跨平台的进程间通信?_C#_Java_Mono_Cross Platform_Ipc - Fatal编程技术网

C# 如何在.NET和Java之间创建跨平台的进程间通信?

C# 如何在.NET和Java之间创建跨平台的进程间通信?,c#,java,mono,cross-platform,ipc,C#,Java,Mono,Cross Platform,Ipc,我想开发一个特定的插件/扩展,它需要在eclipse中运行,并且必须与另一个(java)插件集成,但是它必须从.NET程序集中收集数据(使用) 所以我的问题是,我应该如何在Java代码和.NET之间创建这种关系? 我知道我可以使用mono在Linux上运行.net应用程序,但我有两个问题,我希望Java插件启动.net应用程序,第二个问题是如何让Java插件对.net应用程序进行特定调用 对于这两个应用程序之间的通信,我希望是平台独立的,以便相同的二进制文件可以在Windows、OSX和Linu

我想开发一个特定的插件/扩展,它需要在eclipse中运行,并且必须与另一个(java)插件集成,但是它必须从.NET程序集中收集数据(使用)

所以我的问题是,我应该如何在Java代码和.NET之间创建这种关系? 我知道我可以使用mono在Linux上运行.net应用程序,但我有两个问题,我希望Java插件启动.net应用程序,第二个问题是如何让Java插件对.net应用程序进行特定调用

对于这两个应用程序之间的通信,我希望是平台独立的,以便相同的二进制文件可以在Windows、OSX和Linux中运行。另一个可能很重要的事实是,调用的结果可能包含相当大的对象集合

或者,在java内部托管一个.NET程序集并直接调用它可能更好

更新: 我认为理想的答案可以解决以下问题:

  • 如何从Java端启动/调用.NET程序集/应用程序。(跨平台)
  • 如何与.NET程序集通信
  • 这些选择对可修改性有何影响

您可以使用Tcp/Ip让它们在应用程序之间进行通信。 如何让java应用程序与.net应用程序通信

运输

如何在java和.net应用程序之间传输信息

  • 套接字-连接可以保持打开状态,双方都可以发送内容(=充当客户端)
  • Web服务-没有保持打开的连接,事件处理将不能很好地工作
序列化

如何将对象转换为易于运输的对象

  • 纯XML—易于入门。java和.net都有很好的XML支持
  • SOAP—如果您想公开一个API供所有人使用,那么这非常好。有点复杂
  • Protobof-谷歌序列化协议。存在许多不同的实现
  • 自定义二进制序列化-构建自己的序列化库
如何从java加载.net程序集 在mono中运行java应用程序;)


我不想强迫插件用户在mono中加载eclipse;)虽然它是可行的:-)那只是eclipse正在运行。。更不用说那些插件了;)但是不,我不认为ikvm是这个问题的解决方案。您可以始终通过stdin/stdout进行通信。旧方法,但总是便携的。人们可以使用它,但它需要很多核心级别的知识。在我看来,它有点复杂。