C# 如何在.NET和Java之间创建跨平台的进程间通信?
我想开发一个特定的插件/扩展,它需要在eclipse中运行,并且必须与另一个(java)插件集成,但是它必须从.NET程序集中收集数据(使用) 所以我的问题是,我应该如何在Java代码和.NET之间创建这种关系? 我知道我可以使用mono在Linux上运行.net应用程序,但我有两个问题,我希望Java插件启动.net应用程序,第二个问题是如何让Java插件对.net应用程序进行特定调用 对于这两个应用程序之间的通信,我希望是平台独立的,以便相同的二进制文件可以在Windows、OSX和Linux中运行。另一个可能很重要的事实是,调用的结果可能包含相当大的对象集合 或者,在java内部托管一个.NET程序集并直接调用它可能更好 更新: 我认为理想的答案可以解决以下问题: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
- 如何从Java端启动/调用.NET程序集/应用程序。(跨平台)
- 如何与.NET程序集通信
- 这些选择对可修改性有何影响
- 套接字-连接可以保持打开状态,双方都可以发送内容(=充当客户端)
- Web服务-没有保持打开的连接,事件处理将不能很好地工作
- 纯XML—易于入门。java和.net都有很好的XML支持
- SOAP—如果您想公开一个API供所有人使用,那么这非常好。有点复杂
- Protobof-谷歌序列化协议。存在许多不同的实现
- 自定义二进制序列化-构建自己的序列化库
我不想强迫插件用户在mono中加载eclipse;)虽然它是可行的:-)那只是eclipse正在运行。。更不用说那些插件了;)但是不,我不认为ikvm是这个问题的解决方案。您可以始终通过stdin/stdout进行通信。旧方法,但总是便携的。人们可以使用它,但它需要很多核心级别的知识。在我看来,它有点复杂。