Java 和 C# 互操作性

2022-09-01 08:51:46

我有两个程序。一个在C#中,另一个在Java中。这些程序很可能总是在同一台计算机上运行。

让他们互相交谈的最佳方式是什么?

所以,为了澄清这个问题:

这是一个个人项目(所以专业/昂贵的库是行不通的)。消息量很低,每秒大约会有1到2条消息。消息很小,一些基元类型应该可以做到这一点。我想保持较低的复杂性。Java 应用程序作为单个 jar 部署为另一个应用程序的插件。因此,我必须合并的外部库越少越好。我可以完全控制 C# 应用程序。如前所述,这两个应用程序必须在同一台计算机上运行。现在,我的解决方案是使用某种类似csv格式的套接字。


答案 1

我是jni4net的作者,jvm和CLR之间的开源进程间桥梁。它建立在JNI和PInvoke之上。无需 C/C++ 代码。我希望它能帮助你。


答案 2

凯尔在询问互动方面有正确的方法。在不知道使用模式可能是什么的情况下,没有“正确”的答案。

任何架构决策-尤其是在这个层面上-都是一种权衡。

你必须问问自己:

  • 需要在系统之间传递哪些类型的消息?
  • 需要共享哪些类型的数据?
  • 是否有支持复杂模型对象的重要要求,或者基元 + 数组会这样做?
  • 数据量是多少?
  • 交互发生的频率如何?
  • 可接受的通信延迟是多少?

在了解这些问题的答案或潜在答案之前,将很难选择实现体系结构。一旦我们知道哪些因素是重要的,那么选择更合适的实现候选方案来反映运行系统的要求就容易得多了。


推荐