连接C#和Java的最佳方式是什么?

连接C#和Java的最佳方式是什么?,c#,java,C#,Java,假设您有两个产品,一个是用Java编写的,另一个是用C#编写的。您喜欢基于Java的后端(非用户可见部分),但希望使用C#(WPF)前端。连接它们的最佳方式是什么 请注意,后端必须能够在服务器或本地计算机上运行,前端应该能够连接到其中一个 我的第一个想法是使用类似Web服务的东西 走吧 编辑 转换代码或在各种中立VM(IKVM)中运行代码不是一个选项。在java后端公开web服务,并让C#前端与java web服务对话。看看WCF(windows communication foundation

假设您有两个产品,一个是用Java编写的,另一个是用C#编写的。您喜欢基于Java的后端(非用户可见部分),但希望使用C#(WPF)前端。连接它们的最佳方式是什么

请注意,后端必须能够在服务器或本地计算机上运行,前端应该能够连接到其中一个

我的第一个想法是使用类似Web服务的东西

走吧

编辑


转换代码或在各种中立VM(IKVM)中运行代码不是一个选项。

在java后端公开web服务,并让C#前端与java web服务对话。看看WCF(windows communication foundation),它可能会使与java web服务的对话变得更容易。

您可以使用web服务


或者,您可以使用IVKM将java代码直接嵌入到.NET程序集中。

我已经开发了一个C#富客户端的java后端。他们通过网络服务进行交流。我们真正遇到的唯一问题是继承层次结构,web服务WSDL会删除它

Web服务应该是您的默认选择,因为在该领域中有很多关于互操作性的工作

如果您不介意紧密耦合,并且必须做出基于性能的决策,那么我遇到的两个解决方案是:

我相信还有其他解决方案。

虽然Web服务(WS-*)可能是正确的解决方案,但让堆栈进行互操作可能很困难


HTTP+(POX | JSON)和REST体系结构有很多值得一提的地方

我确实认为跨Java/.NET平台使用Web服务存在一些互操作性问题。例如,同时使用Axis2和.net会出现一些问题。在大多数情况下,存在变通办法


不过,我听到了一些关于使用REST体系结构的好评论。

有几种方法可以创建/获得java和.net系统之间的互操作性

  • 网络服务
  • visualj#
  • Java本机接口(JNI)
  • 字节码翻译
  • 运行时桥
Web服务是最常用的。Web服务大多使用基于SOAP的通信机制,这种机制可能天生比其他二进制通信机制慢。Web服务也不适合在Java和.NET之间作为参数和返回值传递自定义对象

这篇文章很好地概述了什么是什么: