【发布时间】:2010-12-17 15:32:55
【问题描述】:
如何轻松地在 WCF 和 Java 应用程序之间进行互操作?
【问题讨论】:
如何轻松地在 WCF 和 Java 应用程序之间进行互操作?
【问题讨论】:
WCF 是一个 Web 服务框架。 Java 还提供了自己的 Web 服务框架。它们应该能够很容易地进行互操作,但如果您想要更好的答案,您需要问一个更具体的问题。
编辑:您询问的 ProjectTango 链接在第一段中说明了一切:
... 确保互操作性 企业功能,例如安全性, 可靠的消息传递和原子 交易。
这些都是对基本 Web 服务的精美补充,仅凭规范不足以确保兼容性。
我们 99.9% 的人都需要的基本 Web 服务交互在 WCF 和 Java 之间可以正常工作。
【讨论】:
简短回答,是的。
长答案,互操作性取决于几个因素。基本的互操作性非常容易。只有当您考虑安全等因素时,事情才会变得复杂。我们对可用的 Java Web 服务框架进行了一些研究,发现最适合我们场景的是 metro stack 以及 netbeans 6.5 IDE。我们使用客户端/服务器相互证书身份验证实现了项目强制要求的消息安全性。
在此过程中发现的一些问题是:
- 您必须从 netbeans 项目的 glassfish 目录中添加 webservices-rt.jar 库。 (不需要运行 glassfish,只需 jar 文件)
- WCF 生成多文件 WSDL 文件,netbeans 无法使用它们生成代理,但如果将 netbeans 配置为使用 URL (http://../?wsdl),它可以生成代理。
- 您必须将 [IsRequired=true] 放在 WCF 中的所有数据成员上。 Java 对可选数据成员的处理相当复杂。
- 作为数据成员的字典以列表形式出现
【讨论】:
我们已经在几个项目中成功地做到了这一点。我们使用 WCF basicHttpBinding,如果您只需要让它工作,这是最简单的选择。
如果服务使用特定于平台的数据类型,如 Java 向量或 .net 数据集,则可能会造成影响。
【讨论】:
可以在 Java 端使用 JAX-WS 服务,然后在 .NET 中使用 WCF。
首先创建 JAX-WS 服务(glassfish 库将允许您这样做)。创建您的 POJO,添加 JAX-WS 注释,并部署您的 WAR。然后,获取服务器生成的 WSDL 并将其提供给 VisualStudio。 VisualStudio 可以为您生成客户端。
这是简单的方法,但你的里程当然会有所不同。
【讨论】: