致力于测试团队建设和自动化测试开发,欢迎有兴趣者一起研究讨论

典型的Web Service结构

上一篇 / 下一篇  2008-09-18 19:55:15 / 个人分类:Other

51Testing软件测试网J$x)fR P6MiK^gV

不管你的Web service是用什么工具,什么语言写出来的,只要你用SOAP协议通过HTTP来调用它,总体结构都应如下图所示。通常,你用你自己喜欢的语言(VB 6或者VB.NET)来构建你的Web service,然后用SOAP Toolkit或者.NET的内建支持来把它暴露给Web客户。于是,任何语言,任何平台上的客户都可以阅读其WSDL文档,以调用这个Web service。客户根据WSDL描述文档,会生成一个SOAP请求消息。Web service都是放在Web服务器(IIS)后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。对VB 6程序来说,Web service请求处理器是一个与SOAP Toolkit组件协同工作ASP页面或ISAPI extension。而对VB.NET程序来说,Web service请求处理器则是一个.NET Framework自带的ISAPI extension。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。

A?|&j!W0s7a051Testing软件测试网3{k8?CY+W"X&Y

Looxv4f6U,^8{T)C0

?EgZ|6J}e0远程过程调用(RPC)与消息传递51Testing软件测试网4@/Ae1E:y
Web service
本身实际是在实现应用程序间的通信。我们现在有两种应用程序通信的方法:RPC(远程过程调用)和消息传递。使用RPC的时候,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。RPC强调的是远程对象和它的界面,即属性、方法和调用时的参数。DCOM.NET远程访问都是RPC的例子。
~2@[ _ [d:u4t3XZ o0
消息传递一般是在耦合度更低的系统中。消息传递的概念是,客户端向服务器发送消息,然后等待服务器的回应。消息传递系统强调的是消息的发送和回应,而不是远程对象的界面。由于是基于消息的系统,客户端和服务器之间的耦合度比RPC方法更低。
_ s+[2zb-F0RPC
系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而客户端就好像在使用本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。例如,你在VB 6中通过DCOM调用一个远程对象,你的代码看起来就与调用本地对象一样。而消息传递则不同,它强调传递的东西是什么,但不管消息传递过去后干什么。客户不需要知道服务器是怎么实现的,以及消息是怎么被处理的。
S o&o@B E,h0
我们已经说过,你可以建立一个消息服务器,根据收到的消息来调用对象。这是通过消息传递方式有效的实现了RPC。如果客户仍然以消息的思维方式来进行操作,那么你可以把它叫做消息传递。但如果客户以远程对象的思维方式来进行操作,那么你就应该把它叫做RPC
EToKu9^!W9EP0
如果你想实现一个基于XML的消息传递系统,大量的工作将集中在处理XML请求和应答消息上。虽然VB 6VB.NET中,帮助你建立Web Service的工具已经做了许多对XML消息进行处理的工作,但毕竟所有的数据都是用XML的形式收发的,许多情况下你还是需要对消息进行一些自己的处理。深入理解XMLXML Schema对于有效地实现XML消息系统是至关重要的。51Testing软件测试网hTBM$O4I*M2iNf#u
51Testing软件测试网2[U2qEF

(V0] SYwM!n3}0Cs0
建立Web Service51Testing软件测试网"X\'\ Nqjt
我知道你现在已经很心急的想要写点代码,看看Web service到底是什么样的了。那么我们现在就介绍怎样用VB 6VB.NET实际做出一个Web service来。本节的目的只是向你展示一下这些工具的功能,而不是深入地讲解Web service的工作原理。本书后面的章节会向你慢慢说明Web service以及Microsoft SOAP Toolkit.NET等工具的内部原理的。51Testing软件测试网D+pEeak
51Testing软件测试网5Q;@4l!R:IgDd8y
使用SOAP Toolkit
x @a y,n0Microsoft
SOAP Toolkit V2帮助你把COM组件变成Web service。这套工具分为三大主要部分:SoapClient是一个用于调用Web serviceCOM组件;SoapServer是一个处理SOAP请求和返回SOAP应答的组件;还有一个WSDL向导,它可以把你的type library转换成WSDL文档,以暴露给Web service的客户。51Testing软件测试网y4B8nq4m~7y'I
假设你有一个COM组件,暴露出一个GetTemperature方法:51Testing软件测试网lP:X k,q Q
Public Function GetTemperature(ByVal zipcode As String, _51Testing软件测试网-@M?%y8d
ByVal celsius As Boolean) As Single51Testing软件测试网"Zw(L,AKd

L_kXt.A&rO0
要把这个组件变成一个Web service,你可以使用WSDL向导。给出你要转换的组件后,向导会要你选择你想暴露出的方法,指出生成的Web service所在的URL(http://localhost/Temperature/),以及你希望用ASP还是ISAPI做你的请求处理器(如图1-2)。然后向导还会问你生成的WSDLASP文件应该放在那个目录下

W k#AQ*c5C^yX0

k4x#K1o"b `5Nzj:j0

^$DPT3n)_3@G0

现在该调用这个Web service了。方法是在VB其他任何可以使用COM的语言里调用SoapClient组件。下面这段代码演示了怎样调用Webservice中的GetTemperature方法:51Testing软件测试网q V0`'?8s

i(H P)P,hw7Bl0Dim soap As MSSOAPLib.SoapClient51Testing软件测试网!|@:X'W*Fd,n!_
Set soap = New MSSOAPLib.SoapClient51Testing软件测试网"B-O3y-W9zy;@
soap.mssoapinit _51Testing软件测试网%[%qwV[)d n
"http://localhost/Temperature/Temperature.wsdl"
[H*qND,w]e;T0MsgBox ("
气温是:" & _
]~_1I/_r0soap.GetTemperature("20171", False))
51Testing软件测试网PgC"D6HXu-cX$Q.t

m N/}1ywo-ov0首先调用mssoapinit,把WSDL文档的URL传给SoapClientWSDL文档的URL就是你在WSDL向导中给出的URL加上〈Service名字.wsdl〉。一旦初始化完成,SoapClient就得到了Web service的所有方法,你就可以直接调用这些方法了

Zh#b$j t0

TAG: Other

 

评分:0

我来说两句

日历

« 2024-02-25  
    123
45678910
11121314151617
18192021222324
2526272829  

数据统计

  • 访问量: 90537
  • 日志数: 79
  • 图片数: 1
  • 建立时间: 2008-05-18
  • 更新时间: 2009-06-04

RSS订阅

Open Toolbar