如何最佳地连接C#和Java?

6
假设您有两个产品,一个用Java编写,另一个用C#编写。您喜欢基于Java的后端(非用户可见部分),但想使用C#(WPF)前端。如何最好地进行接口设计?
请注意,后端必须能够在服务器或本地计算机上运行,前端应该能够连接到任意一台。
我的第一反应是使用类似Ice这样的东西,或者可能是一个Web服务。
开始吧!
编辑
将代码转换或在某种中立VM(IKVM)中运行不是选项。
7个回答

2

由于在互操作性方面涉及的工作非常多,所以Web服务应该是您的默认选择。

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

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


2

虽然 Web Services(WS-*)可能是正确的解决方案,但让堆栈相互操作可能会很麻烦。

使用 HTTP + (POX | JSON) 和 REST-ian 架构有很多好处。


1
在Java后端上公开一个Web服务,并让C#前端与Java Web服务通信。研究一下WCF(Windows Communication Foundation),它可能会使与Java Web服务的通信更加容易。

1
你可以使用Web服务。
或者你可以使用IVKM将Java代码直接嵌入到.NET程序集中。

0

我曾经为一个C#富客户端编写了Java后端。它们通过Web服务进行通信,也没有出现什么问题。我们唯一遇到的问题是继承层次结构,在Web服务WSDL中被擦除了。


0

我相信在Java/.NET平台之间使用Web服务存在一些互操作性问题。例如,使用Axis2和.net在一起存在一些问题。在大多数情况下,都有解决方法。

虽然如此,我听到了一些关于使用REST架构的好评。


0

有几种创建/获取Java和.NET系统之间互操作性的方法。

  • Web服务
  • Visual J#
  • Java本地接口(JNI)
  • 字节码翻译
  • 运行时桥接

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

这篇文章对各个方法进行了很好的概述:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接