典型的Web Service結構

來源:互聯網
上載者:User
web 典型的Web Service結構
(可樂 2001年11月01日 18:35)

典型的Web Service結構。

不管你的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應答的方式把它送回到用戶端。

典型的Web service結構,點擊小圖放大

遠端程序呼叫(RPC)與訊息傳遞
Web service本身實際是在實現應用程式間的通訊。我們現在有兩種應用程式通訊的方法:RPC(遠端程序呼叫)和訊息傳遞。使用RPC的時候,用戶端的概念是調用伺服器上的遠程過程,通常方式為執行個體化一個遠程對象並調用其方法和屬性。RPC強調的是遠程對象和它的介面,即屬性、方法和調用時的參數。DCOM和.NET遠端存取都是RPC的例子。
訊息傳遞一般是在耦合度更低的系統中。訊息傳遞的概念是,用戶端向伺服器發送訊息,然後等待伺服器的回應。訊息傳遞系統強調的是訊息的發送和回應,而不是遠程對象的介面。由於是基於訊息的系統,用戶端和伺服器之間的耦合度比RPC方法更低。
RPC系統試圖達到一種位置上的透明性:伺服器暴露出遠程對象的介面,而用戶端就好像在使用本地使用的這些對象的介面一樣,這樣就隱藏了底層的資訊,用戶端也就根本不需要知道對象是在哪台機器上。例如,你在VB 6中通過DCOM調用一個遠程對象,你的代碼看起來就與調用本機物件一樣。而訊息傳遞則不同,它強調傳遞的東西是什麼,但不管訊息傳遞過去後幹什麼。客戶不需要知道伺服器是怎麼實現的,以及訊息是怎麼被處理的。
我們已經說過,你可以建立一個Message Service器,根據收到的訊息來調用對象。這是通過訊息傳遞方式有效實現了RPC。如果客戶仍然以訊息的思維方式來進行操作,那麼你可以把它叫做訊息傳遞。但如果客戶以遠程對象的思維方式來進行操作,那麼你就應該把它叫做RPC。
如果你想實現一個基於XML的訊息傳遞系統,大量的工作將集中在處理XML請求和應答訊息上。雖然VB 6和VB.NET中,協助你建立Web Service的工具已經做了許多對XML訊息進行處理的工作,但畢竟所有的資料都是用XML的形式收發的,許多情況下你還是需要對訊息進行一些自己的處理。深入理解XML和XML Schema對於有效地實現XML訊息系統是至關重要的。


建立Web Service
我知道你現在已經很心急的想要寫點代碼,看看Web service到底是什麼樣的了。那麼我們現在就介紹怎樣用VB 6和VB.NET實際做出一個Web service來。本節的目的只是向你展示一下這些工具的功能,而不是深入地講解Web service的工作原理。本書後面的章節會向你慢慢說明Web service以及Microsoft SOAP Toolkit和.NET等工具的內部原理的。

使用SOAP Toolkit
Microsoft的SOAP Toolkit V2協助你把COM組件變成Web service。這套工具分為三大主要部分:SoapClient是一個用於調用Web service的COM組件;SoapServer 是一個處理SOAP請求和返回SOAP應答的組件;還有一個WSDL嚮導,它可以把你的type library轉換成WSDL文檔,以暴露給Web service的客戶。
假設你有一個COM組件,暴露出一個GetTemperature方法:
Public Function GetTemperature(ByVal zipcode As String, _
ByVal celsius As Boolean) As Single

要把這個組件變成一個Web service,你可以使用WSDL嚮導。給出你要轉換的組件後,嚮導會要你選擇你想暴露出的方法,指出產生的Web service所在的URL(如http://localhost/Temperature/),以及你希望用ASP還是ISAPI做你的要求處理常式(如圖1-2)。然後嚮導還會問你產生的WSDL和ASP檔案應該放在那個目錄下。

使用SOAP Toolkit嚮導來轉換COM組件,點擊小圖放大

現在該調用這個Web service了。方法是在VB或其他任何可以使用COM的語言裡調用SoapClient組件。下面這段代碼示範了怎樣調用Webservice中的GetTemperature方法:
Dim soap As MSSOAPLib.SoapClient
Set soap = New MSSOAPLib.SoapClient
soap.mssoapinit _
"http://localhost/Temperature/Temperature.wsdl"
MsgBox ("氣溫是: " & _
soap.GetTemperature("20171", False))
首先調用mssoapinit,把WSDL文檔的URL傳給SoapClient。WSDL文檔的URL就是你在WSDL嚮導中給出的URL加上〈Service名字.wsdl〉。一旦初始化完成,SoapClient就得到了Web service的所有方法,你就可以直接調用這些方法了。


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。