本文由wenzheng0322贡献
pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
用SOA擎?翥溺越荻it开发19%b S6rvlee+.7。6
÷。一,.。
一o、-”
。。|。
j,。一
l。J
jj
+髑搿} 彳纠∥’j’|谬
’f f
f扩
一、Web Service、SOAP、WSDL、WSML简介
1.Web Senrice简介
简单的讲s0AP定义了一种消息交互机制,采用消息交互 来完成类似于传统的RPc(Remote
Pmcedure
call远程方法调
RMI
用)的功能。与传统的RPC机制如DcOM、c0MBA、Java
在目前的分布式的应用开发中,web service(web服务, 本文将统一采用web service,而不使用web服务这个词)已 经成为一个热点。web Senrice简单的说就是部署在web上的 对象/组件,具有良好的封装性,对外提供定义良好的接口供 访问,这种对象和接口都是通过wsDL(web
Senrice
不同的是,s0AP采用xML进行编码,而一般的RPc机制则是 传送二进制数据并且绑定于特定语言或者特定平台(比如 COM/DCOM/COM+就限于Windows平台),由于xML能够 被任何安装有xML解析器的平台所理解,因此s0AP天生就 具有一种连接异构平台的能力。同时s0AP消息是一般通过
Desc啷ni∞
Se卜
LangIlage)来描述的,并且公开给感兴趣的访问者。web
HTI'P协议传送的,由于H竹P得到了广泛的支持和应用,因
此s0AP协议很容易在异构网络上传输,并且能够很容易的穿 过防火墙(传统的DcOM和cORBA都需要在防火墙上打开特 定的端口,可能会有潜在的安全漏洞,相比之下SOAP使用 H7I’rP的80端口可无须特别设定)与各种应用系统进行通 信。综上所述,s0AP由于其高度的集成能力和灵活性得到了 越来越广泛的支持,web Service也是使用SOAP来进行调用 的。 s0AP是典型的请求/响应模型,下面是两段经过简化了的
vice的访问是通过SOAP(Simple Object Acce鹪Pmboc01)协议
来进行的,而s0AP协议一般又是利用H7I皿发送s0AP请求
和接收SOAP响应的。因此web Service一般都是
位于web服 务器之后的,通过各种不同的机制,web服务器中的部件对 SOAP请求加以解析并词用相应的web service,并且把执行的 结果以HTTP响应的方式返回给客户端。如图l所示。
客户端
s0AP请求和响应,可以看到都是用xML编码的。
一个s0AP请求消息,调用了Add方法,参数分别为4和
5。
图l
SOAP
7I钿lkit开发的Web Sen,ice的基本工作原理
<7xmI Version=”1.O”encoding=’UTF一8”standaIone=“ no”7>
<SOAP—ENV:EnvelODe>
由于xML(sOAP和wsDL都是基于xML的)、s0AP、 WSDL和H,I-I'P都是被业界广泛接受的标准,因此web
Service
<SOAP—ENV:Body SOAP—ENV:encodingStyle=”http:// schemas.xmIsOap.Org/sOap/encOding/”> <SOAPSDK4:
Ser. Add
具有高度的集成能力,能够把各种异构平台上的各种服务跨 越异构的网络连接起来,提供一种统一的解决方案。 各家厂商比如S帅、mM,微软都推出了各自的web
×mlns:
SOAPSDK4=“
http://yao—
tong.Org//SoapAdd/message/”>
<i>4</.>
vice开发方案。Windows平台上微软的解决方案,主要是两 种,一种是基于.NET的解决方案,配合Visual smdio.NET的 集成开发环境,开发web seⅣice非常方便高效,这种方案的 缺点是在服务器方一定要有.NET运行支撑环境的支持。另外
<j>5</p‘
</SOAPSDK4:Add> </SOAP—ENV:Bodv> </SOAP—ENV:EnveloDe>
一种方案是采用s0AP‰ll【it进行开发,这种方案的优点是无 需对系统进行大的升级,仅仅需要安装s0AP‰lkit就可以
了,而且有COM组件开发经验就可以进行开发。本文将介绍 基于SOAP’Ibolkit的Web Service的开发。 为了更好的理解web senrice,我们将简要的介绍一下 SOAP、WSDL和WSML(Web 2.sOAP协议简介
Service Meta
一个s0AP响应消息,返回结果为9。
<7xmI Version=”1.O”encoding=”UTF一8”standaIOne=”
no”7>
api接口和sdk接口的区别
<SOAP—ENV:EnveloDe> <SOAP—ENV:Body SOAP—ENV:encodingStyle=”http:// schemas.xmIsOap.Org/soap/encoding/”> <SOAPSDK4:AddResponse xmIns:SOAPSDK4=”http:// yaOtong.org//SoapAdd/message/”>
<ResuIt>9</Res川t>
L肋gIlage)。
。湖▲。一
2003.3
万  方数据
撺嚣’F辫◇辍较鼍鬻e鞲KQ乳0《
<I>4</I> <port
name=’C JassAddSoapPort’> name=’Add’> uses=’CIassAddObiect’
method=7 Add
<j>5</j>
</SOAPSDK4:AddResDonse> </SOAP—ENV:Bodv> </SOAP—ENV:EnveIoDe>
<oDeration <e×ecute
disoID=’1610809344’> <Darameter ca…ndex=’一1’ name=’retvaI’ eIe—
希望进一步了解s0AP读者可以按照附录中提供的网址访 问W3C的SOAP规范文档。 3.wSDL简介 WSDL(Web Senrice Description Language)就是Web
se卜
mentName=’Resuft’/>
<Darameter Name=7i‘/> calIIndex=7 1 name=’i’ eIement—
<parameter Name=7i’/>
</e×ecute> </0DeratjOn> </00rt> </service> </servIcemappmg>
caI}Index=’
2’
name=’
eIement—
vice描述语言。wsDL是一种基于xML的语言,用于描述服 务器所提供的服务。一般来说,web SeⅣice都有一个相应的 wsDL文件用于描述本服务,比如服务的具体位置、提供的方 法、方法的参数以及调用方法所对应的sOAP消息格式等。通 过解析wsDL文件,客户端应用程序就可以得到web
Service
上边的代码将web
service
soapAdd映射到了一个COM组
各种信息,并且确切地知道调用该服务的方法。下面的一段 wsDL代码就是本文的例子中所用到的wsDL的一部分。这段 wsDL描述了一个名为so印Add的web服务,一个端口为 cl鹪sAddso印P0rt(端口的定义参加sOAP相关文档),访问该
件soapProj.classAdd,Web Sen,ice的Add方法映射到了COM 组件的Add方法。 和wsDL不同,wsML仅仅是微软在自己的s0AP
Toolkit
中使用的语言,并不是一种业界标准,这点应该注意,因为各 家厂商实现web senrice的手段几乎都不一样。wsML文件也 不用手动编写,用sOAP T00lkit中的工具也可以自动生成。
服务的网络地址为http://10calhost/Msso印s锄ples30/soa—
padd/so印Add.WSDL。
<servjce
name=’SoaDAdd’> name=’CIassAddSoapPOrt’
7>
<pOrt
bjndjng=’ws—
二、SOAP T00lkit介绍
s0AP
dIns:CIassAddSOapBinding <soap:address
Jocation=7
http://JocaIhost/MSSoapSam.
T00lkit是微软推出的一套开发web senrice的开发
pIes30/soapadd/SoapAdd.WSDL 7/>
</DOrt> </service>
包。目前的最新版本是3.0,本文的SOAP Toolkit的基本思路 是通过对COM组f牛/对象进行进一步的封装,使其成为可以
部署在web上的组f牛/对象,中间的各种转换有s0AP‰lkit
完成。
s0AP
wsDL已经是一个被标准化的并且被业界广泛接受的规 范,详细的规范文档见附录中提供的网址。由于wsDL文件的 编写很麻烦,因此在实际开发中一般很少有人手工编写,大多 数时候是由开发工具自动生成的,s0AP Toolkit也提供了这样 工具,后面将会介绍工具的使用。 希望进~步了解WSDL的读者可以按照附录中提供的网址 访问w3C的WSDL的规范文档。 4.WSML简介 WsML(Web
Service Meta
Toolkit由以下部分组成:
●客户端组件。该客户
端组件允许应用程序以非常简单 的方式调用以wsDL文件描述的web Sen,ice所提供的各种服 务。 ●服务器端组件。服务器端组件将客户端的以xML格式 (SOAP消息)发出的web sen,ice的操作调用映射为对COM 组件的方法调用,这一过程的完成需要借助于wsML文件中
IJanguage)就是Web服务元语
的描述信息。 ●s0AP相关组件。这部分组件被用来建立、传送、读取 和处理SOAP消息。 ●辅助工具。主要包括wSDL/WSML生成工具,SOAP
言。wsML也是一种基于xML的语言,主要作用是提供web senrice与c0M组件之间的映射关系。下面是例子中将用到的 wsML代码。
<7xm
version=’1.O encoding=’UTF一8 7>
<serVicemapping name=7
SoapAdd’
Trace工具,这些工具可以有效的帮助开发人员进行s0AP应 用的开发和调试。
s0AP
×mIns:dime=’http://schemas.xm{soap.Org/ws/2002/ 04/dime/wsdl/’>
<serVice <using
rI硼kit所需的运行环境如下页表。
3.0需要Intemet
Explorer
name=7SoaDAdd’> PROGfD=7 SoapProj.CIassAdd’
cachabIe=7 0’
说明:
SOAP‰lkit
lD=’ClassAddObiect 7/>
5.01以上版本。
,越●一—兰!坚3 万  方数据
运行的位置 服务器端
最小的系统要求
●Windows XP ●Windows2000 ●Windows NT4 SP6
这是比较关键的一步,ISAPI过滤器是用来截获对wsDL 文件的访问的,在SOAP 7Iklkit中,客户端调用web
Senrice
的URL是如下形式:http://服务器地址/路径名/wsdl文件名 .wsDL,经过由于IIs本身并不能解析这种调用,所以需要一 个lsAPI过滤器来进行解析,并且创建So印senrer30对象,并 把客户端传来的soAP调用传给soapseⅣer30对象,最后把调 用的结果返回。SOAP
T001kit
其他需求:IIS 客户端
●Micmsoft Windows XP ●Microsoft Windows