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

时间:2008-11-12 19:54:51

标签: c# java

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

请注意,后端必须能够在服务器或本地计算机上运行,​​并且前端应该能够连接到任何一个。

我的第一个想法是使用像Ice这样的东西,或者可能是网络服务。

Go!

修改

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

7 个答案:

答案 0 :(得分:2)

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

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

我确定还有其他人。

答案 1 :(得分:2)

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

HTTP +(POX | JSON)和REST-ian架构有很多话要说。

答案 2 :(得分:1)

在java后端公开Web服务,让C#前端与java Web服务对话。查看WCF(Windows通信基础),它可能会更容易与Java Web服务交谈。

答案 3 :(得分:0)

您可以使用网络服务。

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

答案 4 :(得分:0)

我在java后端工作过C#rich-client。他们通过网络服务进行沟通。我们真正遇到的唯一问题是继承层次结构,Web服务WSDL擦除。

答案 5 :(得分:0)

我相信在Java / .NET平台上使用Web服务存在一些互操作性问题。例如,一起使用Axis2和.net存在一些问题。在大多数情况下,存在变通办法。

我听说过有关使用REST-ian架构的一些好评。

答案 6 :(得分:0)

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

  • 网络服务
  • Visual J#
  • Java Native Interface(JNI)
  • BytecodeTranslation
  • 运行时桥

最常用的是Web服务。 Web服务主要使用基于SOAP的通信机制,这种机制本身可能比其他二进制通信机制慢。 Web服务也不适合在Java和.NET之间传递自定义对象作为参数和返回值。

本文非常清楚地概述了什么:

http://www.devx.com/interop/Article/19945