日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

典型的Web Service結(jié)構(gòu)

 todaytomo 2007-01-26
典型的Web Service結(jié)構(gòu)。

不管你的Web service是用什么工具,什么語(yǔ)言寫出來的,只要你用SOAP協(xié)議通過HTTP來調(diào)用它,總體結(jié)構(gòu)都應(yīng)如下圖所示。通常,你用你自己喜歡的語(yǔ)言(如VB 6或者VB.NET)來構(gòu)建你的Web service,然后用SOAP Toolkit或者.NET的內(nèi)建支持來把它暴露給Web客戶。于是,任何語(yǔ)言,任何平臺(tái)上的客戶都可以閱讀其WSDL文檔,以調(diào)用這個(gè)Web service??蛻舾鶕?jù)WSDL描述文檔,會(huì)生成一個(gè)SOAP請(qǐng)求消息。Web service都是放在Web服務(wù)器 (如IIS) 后面的,客戶生成的SOAP請(qǐng)求會(huì)被嵌入在一個(gè)HTTP POST請(qǐng)求中,發(fā)送到Web服務(wù)器來。Web服務(wù)器再把這些請(qǐng)求轉(zhuǎn)發(fā)給Web service請(qǐng)求處理器。對(duì)VB 6程序來說,Web service請(qǐng)求處理器是一個(gè)與SOAP Toolkit組件協(xié)同工作的ASP頁(yè)面或ISAPI extension。而對(duì)VB.NET程序來說,Web service請(qǐng)求處理器則是一個(gè).NET Framework自帶的ISAPI extension。請(qǐng)求處理器的作用在于,解析收到的SOAP請(qǐng)求,調(diào)用Web service,然后再生成相應(yīng)的SOAP應(yīng)答。Web服務(wù)器得到SOAP應(yīng)答后,會(huì)再通過HTTP應(yīng)答的方式把它送回到客戶端。

典型的Web service結(jié)構(gòu),點(diǎn)擊小圖放大


遠(yuǎn)程過程調(diào)用(RPC)與消息傳遞
Web service本身實(shí)際是在實(shí)現(xiàn)應(yīng)用程序間的通信。我們現(xiàn)在有兩種應(yīng)用程序通信的方法:RPC(遠(yuǎn)程過程調(diào)用)和消息傳遞。使用RPC的時(shí)候,客戶端的概念是調(diào)用服務(wù)器上的遠(yuǎn)程過程,通常方式為實(shí)例化一個(gè)遠(yuǎn)程對(duì)象并調(diào)用其方法和屬性。RPC強(qiáng)調(diào)的是遠(yuǎn)程對(duì)象和它的界面,即屬性、方法和調(diào)用時(shí)的參數(shù)。DCOM和.NET遠(yuǎn)程訪問都是RPC的例子。
消息傳遞一般是在耦合度更低的系統(tǒng)中。消息傳遞的概念是,客戶端向服務(wù)器發(fā)送消息,然后等待服務(wù)器的回應(yīng)。消息傳遞系統(tǒng)強(qiáng)調(diào)的是消息的發(fā)送和回應(yīng),而不是遠(yuǎn)程對(duì)象的界面。由于是基于消息的系統(tǒng),客戶端和服務(wù)器之間的耦合度比RPC方法更低。
RPC系統(tǒng)試圖達(dá)到一種位置上的透明性:服務(wù)器暴露出遠(yuǎn)程對(duì)象的接口,而客戶端就好像在使用本地使用的這些對(duì)象的接口一樣,這樣就隱藏了底層的信息,客戶端也就根本不需要知道對(duì)象是在哪臺(tái)機(jī)器上。例如,你在VB 6中通過DCOM調(diào)用一個(gè)遠(yuǎn)程對(duì)象,你的代碼看起來就與調(diào)用本地對(duì)象一樣。而消息傳遞則不同,它強(qiáng)調(diào)傳遞的東西是什么,但不管消息傳遞過去后干什么??蛻舨恍枰婪?wù)器是怎么實(shí)現(xiàn)的,以及消息是怎么被處理的。
我們已經(jīng)說過,你可以建立一個(gè)消息服務(wù)器,根據(jù)收到的消息來調(diào)用對(duì)象。這是通過消息傳遞方式有效的實(shí)現(xiàn)了RPC。如果客戶仍然以消息的思維方式來進(jìn)行操作,那么你可以把它叫做消息傳遞。但如果客戶以遠(yuǎn)程對(duì)象的思維方式來進(jìn)行操作,那么你就應(yīng)該把它叫做RPC。
如果你想實(shí)現(xiàn)一個(gè)基于XML的消息傳遞系統(tǒng),大量的工作將集中在處理XML請(qǐng)求和應(yīng)答消息上。雖然VB 6和VB.NET中,幫助你建立Web Service的工具已經(jīng)做了許多對(duì)XML消息進(jìn)行處理的工作,但畢竟所有的數(shù)據(jù)都是用XML的形式收發(fā)的,許多情況下你還是需要對(duì)消息進(jìn)行一些自己的處理。深入理解XML和XML Schema對(duì)于有效地實(shí)現(xiàn)XML消息系統(tǒng)是至關(guān)重要的。


建立Web Service
我知道你現(xiàn)在已經(jīng)很心急的想要寫點(diǎn)代碼,看看Web service到底是什么樣的了。那么我們現(xiàn)在就介紹怎樣用VB 6和VB.NET實(shí)際做出一個(gè)Web service來。本節(jié)的目的只是向你展示一下這些工具的功能,而不是深入地講解Web service的工作原理。本書后面的章節(jié)會(huì)向你慢慢說明Web service以及Microsoft SOAP Toolkit和.NET等工具的內(nèi)部原理的。

使用SOAP Toolkit
Microsoft的SOAP Toolkit V2幫助你把COM組件變成Web service。這套工具分為三大主要部分:SoapClient是一個(gè)用于調(diào)用Web service的COM組件;SoapServer 是一個(gè)處理SOAP請(qǐng)求和返回SOAP應(yīng)答的組件;還有一個(gè)WSDL向?qū)?,它可以把你的type library轉(zhuǎn)換成WSDL文檔,以暴露給Web service的客戶。
假設(shè)你有一個(gè)COM組件,暴露出一個(gè)GetTemperature方法:
Public Function GetTemperature(ByVal zipcode As String, _
ByVal celsius As Boolean) As Single

要把這個(gè)組件變成一個(gè)Web service,你可以使用WSDL向?qū)?。給出你要轉(zhuǎn)換的組件后,向?qū)?huì)要你選擇你想暴露出的方法,指出生成的Web service所在的URL(如http://localhost/Temperature/),以及你希望用ASP還是ISAPI做你的請(qǐng)求處理器(如圖1-2)。然后向?qū)н€會(huì)問你生成的WSDL和ASP文件應(yīng)該放在那個(gè)目錄下。

使用SOAP Toolkit向?qū)磙D(zhuǎn)換COM組件,點(diǎn)擊小圖放大


現(xiàn)在該調(diào)用這個(gè)Web service了。方法是在VB或其他任何可以使用COM的語(yǔ)言里調(diào)用SoapClient組件。下面這段代碼演示了怎樣調(diào)用Webservice中的GetTemperature方法:
Dim soap As MSSOAPLib.SoapClient
Set soap = New MSSOAPLib.SoapClient
soap.mssoapinit _
"http://localhost/Temperature/Temperature.wsdl"
MsgBox ("氣溫是: " & _
soap.GetTemperature("20171", False))

首先調(diào)用mssoapinit,把WSDL文檔的URL傳給SoapClient。WSDL文檔的URL就是你在WSDL向?qū)е薪o出的URL加上〈Service名字.wsdl〉。一旦初始化完成,SoapClient就得到了Web service的所有方法,你就可以直接調(diào)用這些方法了。

(責(zé)任編輯 尤北 lvye@staff.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多