系統之間通訊方式—SOAP(web service)


【web service 簡介】

是一種新的web應用程序分支,是自包含、自描述、模塊化的應用,可以發布、定位、通過web調用。web service是一個應用組件,它邏輯性的為其他應用程序提供數據與服務。各應用程序通過網絡協議和規定的一些標准數據格式(HTTP,XML,SOAP)來訪問web servcie,通過web servcie內部執行得到所需結果。

web services ,可以將應用程序面向全世界發布,或提供某項功能,web services可以被其他應用程序使用。

 

 

【關鍵技術】

(1)xml:描述數據的標准方法,web servcies使用xml來編解碼數據

xml提供了一種可用於不同的平台和編程語言之間的語言。

 

(2)soap:表述信息交換的協議,web services使用saop來傳輸數據

soap是一種用於訪問web service的協議。

 

(3)WSDL:web服務描述語言

使用XML編寫,用於描述web services、如何訪問web services以及用於web services的消息格式和協議的細節語言。

(4)UDDI(Universal Description,Discovery and Integration):通用描述、發現與集成,它是一種獨立於平台的,基於xml語言的用於在互聯網上描述商務的協議。

用戶存儲有關web services的信息的目錄,經由SOAP進行通訊。

 

 

【web service通信】

不管web service用什么工具,什么語言寫出來的,只要你用soap協議通過http來調用它,總體結構都一致。

(1)用你喜歡的語言(如VB6或者VB.NET)來構建你的web services,然后用soap Toolkit或者.net的內建來把它暴漏給web客戶。

注意:web service一般都是放在web服務器(如:IIS、tomcat)后面的。

(2)任何語言、任務平台上的客戶都可以閱讀其WSDL文件來調用webservice。

 

【web service調用過程】

(1)服務器端:生成服務描述文件,以供客戶端獲取(WSDL)。

(1)客戶端:取得服務端得服務描述文件WSDL,解析該文件的內容,了解服務端得服務信息以及調用方式。根據需要,生成恰當的SOAP請求消息(指定調用的方法,已經調用的參數),客戶端生成的soap請求會被嵌入在一個HTTP POST請求中,發送到web服務器端。(之后,開始等待服務端返回的SOAP回應消息,解析得到返回值。)

(2)web服務器端收到客戶端的HTTP POST(SOAP)請求后,在將這些請求發給web service請求處理器。

(3)web service請求處理器解析收到的soap請求消息,解析其中的方法調用和參數格式。根據WSDL和WSML的描述,調用相應的COM對象來完成制定功能,並把返回值放入SOAP回應消息中,傳給web服務器端。

(4)web服務器端得到soap應答后,會再通過HTTP應答的方式把它送回客戶端。

 

 【web service 調用實現】

1、高層接口

使用高層接口,不需要知道soap和xml的任何信息,就可以生成和使用一個webservice。soap Toolkit2.0通過提供兩個com對象—soapClient和SoapServer,來完成這些功能。

在客戶端,只要生成一個soapclient實例,並用WSDL作為參數來調用其中的mossoapinit方法。soapclient對象會自動解析WSDL文件,並在內部生成所有web service的方法和參數信息。之后,你就可以像調用IDispatch接口里的方法一樣,調用里面所有的方法。在VB或是腳本語言中,你甚至可以直接在soapclient對象后面直接加上.方法(參數...)進行調用。

 

2、低層接口

要使用低層接口,你必須對soap和xml有所了解。你可以對soap的處理過程進行控制,特別是要做特殊處理的時候。

在客戶端,首先要創建一個HTTPConnector隊形,負責HTTP連接。設定connector的一些頭部信息,比對EndPoinURL和SoapAction等。如果網絡連接需要使用代理服務器,那頁要在這里色設定相關的信息。接着創建SoapSerializer對象,用於生成soap消息。按照WSDL里定義,把所有參數按順序序列化,得到一個完整的soap請求消息。該soap消息,作為payload通過Httpconnector被發送到服務器端。最后,生成一個soapreader對象,負責讀取服務器端返回的soap消息,取得其中的返回值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM