2019-10-01
參考資料:
《Tomcat與Java Web》,孫衛琴。
這一章節,我們主要解決關於Webservice概念性的問題,首先弄明白Webservice的概念和原理,然後弄清楚它的交互流程,這樣容易理解後續Webservice的調用方法。
1 Web服務的定義
Web服務架構與Web一樣,也是網絡應用層的一種分佈式架構,同時也是基於客戶/服務器通信模式(C/S),並且也能實現異構系統之間的通信。在Web服務架構中,服務器端負責提供Web服務,而客戶端則請求訪問Web服務。
什麼是Web服務呢?有兩個重要概念。
1、Web服務確立一種基於Internet的分佈式軟件架構,它支持兩個運行在不同操作系統平臺上,並且用不同編程語言實現的系統能夠互相通信。一個系統向另外一個系統公開的服務被稱爲Web服務。
2、Web服務可以被看做是客戶端遠程調用的各種方法,這些方法能處理特定業務邏輯,或者進行復雜運算等。下圖顯示客戶端請求訪問服務器端的一個Web服務的過程。
2 Web服務的通信協議
Web服務結構採用SOAP(Simple Object Access Protocol)作爲通信協議。
(1)SOAP規定了客戶端與服務器之間一律使用XML語言進行通信。XML是一種可擴展的闊平臺的標記語言。
(2)SOAP規定了客戶端與服務器發送的Web服務請求的具體數據格式,以及服務器端向客戶端發送的Web服務響應結果的具體數據格式。
要實現Web服務架構,就意味着必須創建基於SOAP協議,負責發佈和調用Web服務,以及負責發送Web服務響應結果的服務器,還要創建基於SOAP協議的負責請求訪問Web服務的客戶程序。
·
3 SOAP協議
1、SOAP(Simple Object Access Protocol),簡單對象訪問協議,是在分佈式的環境中採用交換數據的簡單協議,它以XML爲通信語言。
2、SOAP採用的數據傳輸協議可以是HTTP/HTTPS協議,也可以是SMTP/POP3協議,還可以是爲一些應用而專門設計的特殊數據傳輸協議。
3、SOAP有兩種工作模式。一種稱爲RPC(Remote Procedure Call),另一種方法不統一,在Microsoft的文檔中稱爲Document-Oriented,在Apache的文檔中,稱爲Message-Oriented,它可以利用XML來交換機構更爲複雜的數據,通常以SMTP作爲數據傳輸協議。
可以把SOAP RPC簡單地理解爲這樣一個開放協議:SOAP=RPC+HTTP+XML。它有以下特徵:
(1)採用HTTP作爲傳輸協議,並且採用客戶/服務器模式。
(2)RPC作爲同意的遠程方式調用途徑。
(3)傳送的數據使用XML語言,允許服務提供者和客戶經過防火牆在Internet上進行通信。
4、SOAP客戶訪問SOAP服務的流程如下(Webservice的交互流程):
(1)客戶端創建XML格式的SOAP請求,它包含了提供服務的服務器的URI、客戶請求調用的方法名稱和參數信息。如果參數是對象,則必須進行序列化操作(把對象轉化成XML數據)。
(2)客戶端的協議連接器把XML格式的SOAP請求頭包裝爲HTTP請求,即把SOAP請求作爲HTTP請求的正文,並且增加HTTP請求頭。
(3)服務器端的協議連接器接收到客戶端發送的HTTP請求,對其進行解析,獲取其中的請求正文,請求正文就是客戶端發送的XML格式的SOAP請求。
(4)服務器對XML格式的SOAP請求進行解析,如果參數中包含對象,先對其進行反序列操作(把XML格式的參數轉換爲對象),然後執行客戶請求 的方法。
(5)當服務器執行完畢後,如果方法的返回值是對象,則先對其進行序列化操作,把對象轉化爲XML格式,然後把返回值包裝成XML格式的SOAP響應。
(6)服務器端的協議連接器把XML格式的SOAP響應包裝爲HTTP響應,即把SOAP響應作爲HTTP響應的正文,並且增加HTTP頭。
(7)客戶端的協議連接器接收到服務器端發送的HTTP響應,並對其進行解析,獲取其中的響應正文,響應正文就是服務器端發送的XML格式的SOAP響應。
(8)客戶端解析XML格式的SOAP響應,如果返回值中包含對象,則先對其進行反序列操作,將XML格式轉化成對象,最後獲得返回值。