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

标签 c# java mono cross-platform ipc

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

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

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

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

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

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

最佳答案

应用程序之间的通信。

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

交通

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

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

序列化

如何将对象转换成易于运输的东西。

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

如何从 java 加载 .net 程序集

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

http://www.ikvm.net/

关于c# - 如何在 .NET 和 Java 之间创建跨平台进程间通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4041526/

相关文章:

c# - VSTO:仅在加载文档时启用功能区按钮

java - 如何在 onCreate 方法之外初始化我的 RelativeLayoutButton?

android - Xamarin:找不到 "libmonodroid.so"模拟器错误

winforms - MonoDevelop中的WinForms应用程序

c# - C# 控制台应用程序可以在没有 Mono 的 Linux 中运行吗?

c# - 使用当前线程区域性与两位数的月份和日期格式化日期?

c# - 可编辑复合主键

c# - Google Apis C# FileDatastore

java - Java排序,字符串比较

Java RPN (Reverse Polish Notation) 中缀到后缀