使用 Web 服务进行 Perl/.NET 互操作

  • Jonathan Allen
  • 李剑

2007 年 8 月 21 日

话题:SOA.NET语言 & 开发架构

Web 服务一直宣称的就是可以在无视底层平台差异或是语言差异的情况下,进行跨应用的集成。N 久的岁月过去了,它的承诺一直摆在人们的面前,但我们却仍然需要做些手脚才能让它履行自己的诺言。

Windows Communication Foundation,或称作 WCF,其意图是把.NET 运行时所使用的不同的通讯技术(包括消息队列,远程方法调用和 Web 服务)统一为一体。

Perl 可以通过 SOAP::Lite 来使用基于 SOAP 协议的 Web 服务。但不幸的是,这个库一直没有能够跟得上 WS 规范的变化。Soaplite 的领导者 Byrne Reese 在今年 1 月份的“State Of the SOAP(SOAP 之现状)”(http://www.soaplite.com/2007/01/state_of_the_so.html)的文章中大致提到过这一点。

大多数 SOAP 工具箱都能和 SOAP 协议保持稳定。和它们相比,这个 SOAP 工具箱的状态还算过得去。它与其他工具箱的区别就是,在大多数情况下,它一直都是很容易使用的。但随着越来越多的人采用了文档字面量(document-literal)作为他们的首选编码方法,SOAP::Lite 面向 XML::RPC 的本质和对 XML::RPC 方式的偏好,已经开始捉襟见肘了,而这个工具箱本身也没有太大的灵活性。

其结果就是,在比较新的一些 SOAP 服务器和客户端的实现中,SOAP::Lite 就会有为数不少的一些已知的互操作问题。

上个月 Jeff Powers 列出了在 Perl 中使用 SOAP::Lite 来访问.NET WCF 服务所需要的事项。具体信息可以参见他的文章:How to consume a WCF service from Perl with SOAP::Lite。由于文章中提到的步骤要求在.NET 端修改 WCF 端点,所以它可能会给现有的客户端带来兼容性的问题。

查看英文原文:Perl/.NET Interoperability Using Web Services

SOA.NET语言 & 开发架构