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

时间:2010-10-28 09:33:17

标签: c# java mono cross-platform ipc

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

所以我的问题是如何在Java代码和.NET之间创建这种关系? 我知道我可以使用mono来运行.net应用程序,例如Linux,但我有2个问题,我想Java插件启动.NET应用程序,第二个问题是如何让Java插件进行某些调用到.NET应用程序。

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

或者也许更好/可能在java中托管.NET程序集并直接调用它?

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

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

2 个答案:

答案 0 :(得分:6)

应用程序之间的通信。

如何让java应用程序与.net应用程序通信

<强>运输

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

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

<强>序列化

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

  • 纯XML - 易于上手。 java和.net都有很好的XML支持
  • SOAP - 如果您希望公开API供所有人使用,那就太棒了。有点复杂。
  • Protobof - 谷歌序列化协议。存在许多不同的实现。
  • 自定义二进制序列化 - 构建您自己的序列化库

如何从java

加载.net程序集

以mono;)

运行java应用程序

http://www.ikvm.net/

答案 1 :(得分:1)

您可以使用Tcp / Ip让他们进行交流