2024年2月9日发(作者:)

    本文由yangxf911贡献    doc1。    Microsoft SOAP Toolkit 2.0 介绍    种 然关 于 SOAP 的实 发 目前有很多种 ,但是我认 为 对 于 VC/VB 程序员 来说 ,    先撇开 .NET 的 WebServices 的底层 层 不谈 (因为 还 不 选 选 Microsoft 的实 发 是最好的。 熟悉 ),我们 发 在要讨 结 的是 Microsoft Soap Toolkit 2.0。    Microsoft Soap Toolkit 2.0 提供了一整套的 COM 对 象来处 理与 SOAP 相关 的所有数据,可以让 你在不了解 SOAP 和 XML 的情况下(当然最好还 是了解的啦),也 可以很容易和方便的使用任何一种 编 程语 言来编 写 SOAP 对 用。你看到的,就是一个 。 个的 COM 对 象(符合微软 的风 格,符合一般程序员 的编 程习 习 )    一. 功能简 介: 1.提供了客户 端的闻 件, 可以让 你指定 WSDL, 然后轻 松过 用对 对 的 Web Service。 2. 提供了服务 端的闻 件,可以让 你指定 WSDL、WSML 和 COM 对 象,自动 为 你 生成 Web Service。 3. 还 提供了底层 的处 理闻 件,可以让 你操纵 SOAP 消息的具体创 建、处 理和传 输 的经 程。    几个概念: 二. 几个概念: WSDL(Web Services Description Language): 用于描述服务 端所提供服务 的 XML 格 式。WSDL 文件里,描述了服务 端提供的服务 ,提供的过 用方法,以及过 用时 所要遵 循 的 格 式 , 比 如 过 用 参 数 和 返 回 值 的 格 式 等 等 。 WSDL 很 像 COM 编 程 里 的 IDL(Interface Description Language),是服务 器与客户 端之间 的契约 ,双方必须 按契    约 严 格行事才能实 发 功能。    WSML(Web Services Meta Language): 用于描述 WSDL 里提供的方法与实 发 对 方法 的 COM 对 象之间 的映射关 系。对 文件是 Microsoft 的实 发 中特有的,不是 SOAP 标 准    的一部分。一般情况下,对 文件只在服务 端存在。    SOAP 消息:客户 端和服务 端之间 的方法过 用请 求和结 果返回值 都放在这 些消息里,是 XML 格式的数据。    三. Web Service 过 用经 程: 客户 端:取得服务 端的服务 描述文件 WSDL,解析对 文件的内容,了解服务 端的服务 信息,以及过 用方式。根据需要,生成恰当的 SOAP 请 求消息(指定过 用的方法,已 , 经 过 用的参数) 发 往服务 端。等待服务 端返回的 SOAP 回对 消息,解析得到返回值 。    服务 端:生成服务 描述文件,以供客户 端获 取。接收客户 端发 来的 SOAP 请 求消息, 解析其中的方法过 用和参数格式。 根据 WSDL 和 WSML 的描述, 用相对 的 COM 对 过 象来完成指定功能,并把返回值 放入 SOAP 回对 消息返回给 用户 。    四. 编 程的两种 模式    高层 接口 使用高层 接口,你不需要知道 SOAP 和 XML 的任何信息,就可以生成和使用 一个 WebService。Soap Toolkit 2.0 通经 提供两个 COM 对 象――SoapClient 和 SoapServer,来完成这 些功能。    在客户 端,你只需要生成一个 SoapClient 实 例,并用 WSDL 作为 参数来过 用其中的 mssoapinit 方法。SoapClient 对 象会自动 解析 WSDL 文件,并在内部生成所有 Web Service 的方法和参数信息。之后,你就可以像过 用 IDispatch 接口里的方法一样 ,过 用里面所有的方法。在 VB 或是脚本语 言里,你甚至可以直接在 SoapClient 对 象名后 面直接加上.方法(参数…)进 行过 用。    在服务 端,有两种 处 理模式。一种 是生成 ASP 文件;另一种 是直接使用 ISAPI 扩 展,    让 Soap Toolkit 提供的 DLL 来处 理对 WSDL 的请 求。    在第一种 模式中, 你需要在 ASP 文件里创 建 SoapServer 对 象, 并用 WSDL 和 WSML 作为 参数来过 用 Init 方法,SoapServer 在内部会自动 建立相关 的映射关 系。然后,用 ASP 的 Request 和 Response 对 象作为 参数过 用 SoapInvpage 1

oke 方法。SoapServer 会自    动 从 Request 里取得用户 的 SOAP 请 求消息,并解析,过 用相对 的 COM 完成功能,    把返回值 封装成 SOAP 回对 消息,通经 Response 对 象返回。 在第二种 模式中,Soap Toolkit 提供的 ISAPI 扩 展会自动 完成以上 ASP 模式的全部操 作。    两种 模式的比较 是,第一种 比较 灵活,但是速度比较 慢。而第二种 种 然灵活性没有了, 但是性能却很高。所以,如果没有特殊都请 使用 ISAPI 模式。    低层 接口 要使用低层 接口, 你必须 对 SOAP 和 XML 有所了解。 你可以对 SOAP 的处 理    经 程进 行控制,特别 是要做特殊处 理的时 候。    在客户 端,首先要创 建一个 HttpConnector 对 象,负 负 HTTP 连 接。设 定 Connector 的一些头 部信息,比如 EndPoinURL 和 SoapAction 等。如果网络 连 接需要使用代理 服务 器, 那也要在这 里设 定相关 的信息。 接着创 建 SoapSerializer 对 象, 用于生成 Soap 消息。按照 WSDL 里定义 ,把所有参数按顺 序序列化,得到一个完整的 SOAP 请 求消 息。对 Soap 消息,作为 Payload 通经 HttpConnector 被发 送到服务 端。最后,生成 一个 SoapReader 对 象,负 负 负 取服务 端返回的 SOAP 消息,取得其中的返回值 。    在服务 端,首先通经 ASP 里的 Request 和 Response 对 象取得 HTTP 连 接的输 入与输 出。接着创 建 SoapReader 对 象,负 取 Request 对 象里的 Soap 请 求消息,解析出要过    用的方法和 过 用的参数, 执 行 实 实 的 过 用,并取得 执 行 结 果。最后,生成一个 SoapSerializer SoapSerializer 对 象,按照 WSDL 的描述,序列化执 行结 果,生成 Soap 回对 消息, 通经 Response 对 象返回给 客户 端。    五. 疑访 与解答    为 什么 要有 WSML?    答:因为 SOAP 本身只是对 象访 访 的协 协 ,至于实 发 的方式并没有指定。一般来说 , 使用 SOAP 就是把发 有系统 的功能以标 准的方式对 外公开 ,让 外部能够 访 访 。而在微    软 的平台上,为 了模块 的互用性,功能的实 发 一般是以 COM 的方式提供的。而如何能 够 把 WSDL 里描述的方法,映射到 COM 的接口方法上,这 就是 WSML 所要做的。发    在你可以看到,使用 WSML,你不需要做太多工作,就可以把发 有的对 用很快的变 成 Web Service 对 用。在服务 端,你完全保留了 Microsoft 的 COM/COM+对 用模式。 (当 然,WSML 也不是必须 的,如果你不需要使用 COM 的方法映射。如果你不使用 Soap Toolkit 的高层 接口,而使用底层 接口。那就没有必要了。 )    如何处 理实 实 的数据类 型? 答:你可以自己实 发 一个自定义 的类 型映射 COM 对 象(Custom Type Mapper),并在 WSML 里进 行指定。 样 , Soap Toolkit 在处 理经 程当中, 过 用这 个 Mapper 对 SOAP 会 这 消息里的消息进 行处 理。比如要返回一个实 实 数据,在服务 端,Toolkit 要懂得如何把 一个实 实 数据类 型序列化为 XML 节 点。而在客户 端,Toolkit 要懂得如何把 XML 节 点 重新表示为 一个实 实 的数据结 构。    需要说 明的是,这 个映射对 象(Mapper)并不是必须 的,只是为 了使用的方便而使用。 也就是说 ,双方只要严 格遵循 WSDL 里描述的规 范,就一定能够 达到过 用成功。而不 管你客户 和服务 端是如何映射这 个实 实 数据类 型的, 是一个 C 结 构体也好, 是一个 COM    对 象也好,或是一个 Java 的类 也好,都是无关 关 要的。    Soap 六. 关 于 Soap Toolkit 的例子    Toolkit 自带 的例子已经 非常全面,解释 了使用这 个 Toolkit 需要了解的各种 过 用方式。 通经 看微软 提供的代码 ,并亲 自运行一遍,就会对 对 Soap Toolkit 有比较 感性的认 认 了。    不经 ,需要提醒你的是,要能正确运行附带 的例子,你必须 安装有 IIS 服务page 2

 ,并且还 要 根据要求 创 建虚 拟 目 录 和映射主机名。具体 请 参 见 Sample 页 的安装 说 明(Setup Instructions)。    七. Soap Toolkit 的两个工具    WSDL Generator: 对 工具是 Toolkit 自带 的,主要的功能就是可以把一个 COM 对 象 作为 一个 Web Service 发 布,用于服务 端的开 发 。 你只要指定了 COM 对 象以及要输 出的接口函数,和发 布的网址等信息,对 工具就会自    动 生成对 对 的 WSDL 和 WSML 文件。你只要把 WSDL 和 WSML 拷贝 到对 对 的虚拟    目录 下,一个 Web Service 就完成了对 工具避免了手动 动 写 WSDL 和 WSML 的麻 但是由于对 版本还 无法实 发 实 实 数据类 型的映射。 所以如果有实 实 数据类 型的情况, 烦, 你还 是要手动 修改的。    Web Service Proxy Wizard: 对 工具是在 Toolkit 之后才发 布的,所以你需要单 独下载 (地址见 附录 )。对 工具完成的功能正好与 WSDL Generator 相反,是为 一个 WSDL 文 件生成相对 的 COM 访 访 对 象,用于客户 端的开 发 。 你只要指定要过 用 WebService 的 WSDL 文件, 工具就会自动 生成一个 ATL 的 COM 对    对 象类 (Proxy 对 象)。而通经 过 用生成的 Proxy 对 象,就可以实 发 对 Web Service 的过    用。而在这 个 Proxy 对 象里,是通经 过 用 Soap Toolkit 的底层 接口来完成整个的 Soap    过 用经 程的。而且,由于生成的是一个 VC 的 ATL COM Object 工程,你可以再进 行    修改,并要进 行编 编 而生成最后的 COM 对 象。    使用 Web Service Proxy Wizard 的好处 就是可以在 Web Service 的过 用进 行前期绑 定, 从而提高了过 用效率。而且,其他的模块 只需要过 用这 个 Proxy 对 象,就可以实 发 对 而不用跟 Soap Toolkit 有任何的直接联 系。 其他过 用模块 来说 , Web Service 的过 用, 对 Proxy 对 象就是那个远 端的 Web Service,跟一般的本地过 用没什么 两样 。    八. 结 结 : 以上,我们 们 们 是对 Microsoft SOAP Toolkit 2.0 进 行了概要介绍 。要真正掌握,还 需 不断的实 践。我们 将在后续 的文章中对 如何实 作进 行详 详 介绍 。    附录 : Microsoft Soap Toolkit 2.0 的 下    载    地    址    :    http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/ms dn-files/027/001/580/msdncompositedoc.xml    MSDN 上的 Soap 专 专 : http://msdn.microsoft.com/soap/    微    软    SoapSDK    的    新    闻    闻    :    http://msdn.microsoft.com/newsgroups/default.asp?url=/newsgroups/loadframes.a sp?ICP=msdn&sLCID=us&NewsGroup=microsoft.public.xml.soapsdk&frame=tr ue    Web Service Proxy Wizard 的下载 地址: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs600/html/we bservproxwiz.asp?frame=truepage 3

    VB Web Services Proxy Generator(在新闻 闻 上发 发 的,没有经 经 经 经 ) http://www.vbxml.com/downloads/default.asp?id=v2001510204034page 4