在.NET 与 Java 间进行 Web Service 交互的新选择

  • Boris Lublinsky
  • 张海龙

2008 年 3 月 31 日

话题:JavaSOA.NET微软语言 & 开发架构

谈到.NET 和 Java 之间的 Web 服务交互性时,通常的选择只有 SOAP over HTTP,而根据.NET 3.0 的相关规范,这仅有的一个选择也将会受到更多限制,.NET 中提供的 BasicHTTP 将是唯一能直接与 Java Web Servcies 进行交互的方式。

最近,有两个新的选择出现了——WebSphere MQ(WMQ)和 ActiveMQ 传送器,它们可以用于创建 Java 和.NET 之间的交互式 Web Services。而且.NET 的可靠消息系统已经得到了扩展,因此对于 MSMQ 来说,WMQ 和 Active MQ 都可以作为.NET Web Services 的可靠传递者。

WMQ 解决方案基于 IBM AlphaWorks 中 IBM WMQ for Windows Communication Foundation 的定制通道(Custom Channel),它的最新版本已于 3 月 14 日发布。这一产品允许将 WMQ 作为定制通道用于 Windows Communication Foundation(WCF)框架(已随.NET Framework 3 提供)中,它与微软的内建通道工作方式相同。

消息都是经过格式化的,以满足 WMQ v6.0 的 SOAP over JMS 实现,让应用程序即可以和运行于 WCF 之上的服务进行通信,也能和运行在 WebSphere SOAP over JMS 服务基础之上的服务进行通信,包括 WebSphere 应用服务器和 CICS。

目前的实现是以概念验证为主,是为了帮助更好地理解对这一领域产品的需求(也就是说它并不适合在产品环境中使用),如何产品化这一实现的计划还没有最终确定。

定制通道的构建是通过 Windows Communication Foundation 的可扩展框架提供的,这一可扩展框架允许集成和使用那些与微软提供的内建传送器类似的传送器。服务型应用只要通过配置就可以使用新的定制通道,只要客户端应用程序是通过像微软的 Service Metadata utility Tool(Svcutil.exe)这样的标准工具生成的,它们就可以正常运行。服务的元数据描述可以被正在运行的服务直接发布(可以通过一个附加的 HTTP 端点来暴露)或者使用 WSDL(Web Service Description Language)。

目前的实现版本支持核心的消息功能,它有如下限制:

  • 对于一个服务实例,只有一个客户端可以使用双向通道的模式;
  • 双向通道是对 WebSphere MQ v6 所提供的 SOAP/JMS 实现的一种扩展,它只能用于 WCF 服务与其客户端之间的通信;
  • 仅支持核心的消息功能(如不支持像事务化和安全等高级特性)
  • 运行在现存 WMQ v6 的 SOAP/JMS 环境中的 SOAP/JMS 服务仅能进行单向操作;
  • 运行在 CICS 或 WebSphere 应用服务器的 SOAP/JMS 环境内的 SOAP/JMS 服务,不允许在一个单一合约中混合使用单向操作和请求 / 回复操作,而必须为每个通道形态分别创建独立的合约。

Active MQ 解决方案基于 Axis 提供的 JMS(由 Java 编写而成)和“插件式协议”特性(由.NET 编写而成),因此,它并不是以真正的.NET 定制通道方式包装的,这就需要更多的定制编程。

这两种解决方案都没有彻底的产品化,但它们却提供了一个很好实验基础,以选择合适的 Web Services 交互式传送器。

查看英文原文New Options for .NET-Java Web Services Interoperability



JavaSOA.NET微软语言 & 开发架构