【问题标题】:How could I create a cross platform interprocess communication between .NET and Java?如何在 .NET 和 Java 之间创建跨平台进程间通信?
【发布时间】:2010-10-28 09:33:17
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: c# java mono cross-platform ipc


    【解决方案1】:

    应用程序之间的通信。

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

    交通

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

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

    序列化

    如何将物体转换成易于运输的东西。

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

    如何从 java 加载 .net 程序集

    以单声道运行 java 应用程序;)

    http://www.ikvm.net/

    【讨论】:

    • 我不想强迫插件的用户在单声道中加载 Eclipse ;)
    • 这只是 Eclipse 运行.. 更不用说所有这些插件了 ;) 但不,我不认为 ikvm 可以解决这个问题。
    • 您始终可以通过标准输入/标准输出进行通信。旧方式,但始终便携。
    【解决方案2】:

    你可以使用 Tcp/Ip 让他们通信

    【讨论】:

    • 可以用,但是需要很多核心知识。而且在我看来有点复杂。
    猜你喜欢
    • 2011-01-14
    • 2012-07-16
    • 1970-01-01
    • 2021-07-01
    • 2011-03-22
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多