Web服务内幕,第3部分:Apache和Microsoft -- 良好的合作 来源: 时间:2002-08-22 09:38 作者:AMTeam.org Web服务内幕,第3部分:Apache和Microsoft --
良好的合作
软件工程师,Emerging Technologies,IBM 2001 年 5 月 在“Web 服务内幕”的这个部分中,James Snell 通过演示使用
Microsoft SOAP 工具包 Beta 2 获得 Apache 基于 SOAP 的 Web 服务是如此的轻松,表明 Apache 和 Microsoft
可以很好地合作。 IBM、Microsoft 和
Apache 请注意:为了试验这里的两个示例,您需要下载最新版 Apache SOAP (2.1 版) 和 Microsoft SOAP 工具包 (Beta 2 或以上)。请参阅参考资料。 互操作性 -- xsi:type
属性的问题 图 1: Web 服务体系结构的基本组件
服务提供者通过在服务代理者那里注册来配置和发布服务;
发布的服务使用“通用描述、发现和集成(UDDI) API”; 不幸的是,这个简单的解决方案听起来容易实现,但实际上却难得多。SOAP 的许多可选组件形成的灵活性、及其固有的综合单一性使得我们在尝试实现它时会受到挫折。举个例子,Microsoft 和 Apache SOAP 工具包间产生的 xsi:type 属性冲突是个恼人的小问题,它可以导致一段时间内工具间互操作性的完全中断。 不要忘记,根据 SOAP 规范,一个信封中包含的各个元素可能选择性地使用 xsi:type 属性来识别其包含的数据类型。如果服务提供者和请求者有一些其它方式来传递此信息,则它不必被包含在信封中。 xsi:type 只有当无其它方式传递这些数据类型时,才应使用这个属性。 为了解决这一问题,Microsoft 建立了一个外部服务描述文档的相关性,它描述了数据类型,且能被服务提供者和请求者访问。Apache 要求任何时候都要包含 xsi:type 属性。 这两种方法都是“合法 SOAP”(尽管 Apache 采取的实现方法被认为更合法和更固定一些),但是它们彼此不兼容。附带补充一句,Apache SOAP 没有而且是依然没有理解 Microsoft 采用的服务描述语言。这种语言已有过三次反复。首先是“服务描述语言”或 SDL,其次是“服务合同语言”或 SCL,再次是现在的 “Web 服务描述语言”或 WSDL。 同时 Microsoft 也没有包含任何机制能方便地把 xsi:type 属性添加到工具生成的 SOAP 信封上。不过好在情况已有所改变。Microsoft 现在有一个新的十分灵活的 SOAP 实现方式,它包含对 SOAP 信封更好的支持和更低级别的控制。而 Apache 也已解除需要存在 xsi:type 属性的限制。这样,两个工具间就能互相自由传递信息了。 一个扩展的股票行情服务,版本 1 图 2:Nasdaq 行情的 XML 数据的屏幕截图
配置这个 Web 服务 步骤 1. 创建一个 Apache 配置描述符。Apache SOAP Service Manager 利用配置描述符(一个简单的 XML 文档)收集有关已配置服务的信息。请参阅清单 2 中的 NasdaqQuotes 服务版本 1.0 的配置描述符。 清单 2: 一个 XML 配置描述符
Apache SOAP 文档中有 XML 配置描述符的详细结构说明。但是请注意我们例子中的
步骤 2. 一旦已创建配置描述符,您得用它将 NasdaqQuotes 服务配置在服务的注册记录中。通过执行此命令行可以完成配置。 这里 http://acme.com/soap/servlet/rpcrouter 对应您的 SOAP RPC Router Servlet 安装。NasdaqQuotes 服务完成配置,并可以使用了。您可以通过调用本文附带的 zip 包中所提供的基于 java 的客户端来测试此服务。请参阅 readme.txt 的指导。 步骤 3. Microsoft 工具需要使用一个 WSDL 文档,它描述服务的界面和位置。既然 Apache SOAP 不包含对 WSDL 的任何支持,您就有两种选择:用 IBM 的 alphaWorks 的 WSDL 工具包来为指定的 Java 类生成 WSDL,或者自己编写 WSDL 文件。我建议您手写 WSDL (请参阅清单 3 ) -- 把东西写出来会让您对 WSDL 的结构和功能有更好的感觉。如果您需要出色的 XML 编辑器,我大力推荐商用的 XML-Spy 产品,但是其他编辑器也能用。 在编辑完 NasdaqQuotes.wsdl 文件后,该使用 Microsoft 工具了。在这篇文章所带的 zip 包中,您会发现 samp1e 目录里有两个名为 nq.vbs 和 vq.bat 的文件。 nq.vbs (请参阅清单 4 )文件包含使用 Microsoft SOAP 工具包调用 NasdaqQuotes 服务的代码,脚本有 43 行代码,但实际 SOAP 调用的发生只有前六行(它们中的四行由初始化基本变量的代码组成)。您看,Microsoft 下了很大功夫使人们方便地使用他们的工具。 清单 4: 针对 Microsoft SOAP 工具包的 nq.vbs Set SC = CreateObject("MSSOAP.SoapClient") 通过执行 nq.bat 文件,您可调用 NasdaqQuotes 服务,把您要查询的代号作为一个命令行参数来传入(请参阅图 3)。 图 3: 从命令行运行 NasdaqQuotes
请点击文章顶部或底部的讨论,参与有关这篇文章的讨论论坛。 针对本文中的项目的 Java 和 XML 源代码在这个 zip 文件中。 请下载最新版的 Apache SOAP。 请下载最新版的 Microsoft SOAP 工具包。 请查看 SOAP 参考资料的 cetus-links 索引。 如同 Web 服务资源中心和开发顾问,Lemur Labs 也有一个附带参考资料的 SOAP 信息页面 。 Soaprpc.com专门提供有关 SOAP 信息的参考资料,SoapWare.org 和 SOAPClient.com 同样如此。 关于作者
|
||
关键词:
|
相关文章 |