WebService的簡介、原理和使用方法

  第一部分:直觀概述
  
  Webservice的幾種概念:
  
  以HTTP協議爲基礎,通過XML進行客戶端和服務器端通信的框架/組件。
  
  兩個關鍵點:
    1)服務端提供的功能,通過xml描述;
    2)第一步中描述的功能,嵌入到HTTP協議中,使得能通過HTTP協議進行通信(就是SOAP)
  採用這兩個技術的主要目的:
  
  1) 跨平臺,支持HTTP協議的主機和服務器都能夠建立通信聯繫,並且大部分主機和服務器都支持HTTP協議,一般而言,所有主機和服務器之間的通信都需要通過防火牆,HTTP協議的優勢在於防火牆一般不會封掉80端口,這樣就方便安全通信;
  
  2) 跨語言,任何語言都支持XMl文件的解析,這樣不同語言之間也可以用XML傳遞信息,通信的內容受XMl限制;例如,java開發的服務器端,c語言的客戶端也可以訪問。

第二部分:基本原理和構架

  上面只是說明了一來一回的通信,實際情況要更爲複雜,需要考慮一下問題,參照圖例說明:
  1) 服務器端(Privider)提供統一的標準化服務。就像開辦一個公司(即Server Privider),然後去工商行政管理局註冊公司的性質和地址,目的是,別的公司想要知道你的地址,那麼去工商管理局就可以知道你公司的地址。這樣統一的做法,是方便所有的公司以及所有需要公司提供服務的客戶。並且這些信息是最大限度的公開。
  2) 客戶端 (Requester) 到註冊中心 (Registry) 拿到公司的基本信息之後 , 去找到這個公司 , 然後使用該公司提供的服務。
如下解釋:
  1、 (1)Provider節點提供好服務之後,首先註冊到Registy;
  2、(2) 和 (3) Requester 節點到 Regitry 節點查信息 , 找到需要的 Provider 及其提供的 Service;
  3、(4) Requester 使用 Provider 提供的服務.
更具體的理解如下:
  上圖這些東西 , 完完整整的呈現了 WebService 的整個原理流程 :
  1.Client 有需要,想調用一個服務,但不知道哪裏去調用 . 但知道 UDDI Registry 上可以查到。
  2.果然 UDDI 記錄了某個一個叫做 Web Server A 的服務器能提供這樣的服務。
  3.於是 Client 去 Web Server A, 詢問確切的調用方法。
  4.Web Server A 看到 Client 提出的“確切方法查詢”之後, 立即返回給它一個 WSDL 描述的 xml 文檔這裏記錄他能提供的各類方法接口 .
  5.Client 瞭解到這些之後,將這些 xml 的接口方法,封裝成爲 HTTP 請求 , 發給 Web Server A. 這些封裝方式採用的是標準的 SOAP 方式 , 實質是滿足 HTTP 協議的一些 SOAP 的報文消息。
  6.Web Server A 迴應的也是 HTTP 協議的 SOAP 包 . 這樣雙方的請求 - 響應完全暢通。

  上面我們看到的是應用原理圖 , 進一步深入 , 可以發現如下的協議架構圖 :

  上面我們已經花了很大的精力 , 介紹了發現 Service(UDDI), Service 提供的接口描述 (WSDL), 調用 Service(SOAP), 以及傳輸 (HTTP) 的的整個過程。因此不再做介紹。這個技術的核心是 SOAP.

第三部分 : 實踐 WebService
  
  看到上面的圖那麼複雜 , 實質上 SOAP+HTTP 協議已經足夠成熟,犯不着讓我們通過 xml 生成帶有 SOAP 變遷的 HTML 腳本 , 有很多工具可以幫住我們實現。事實上,開發起來還是相當簡便的。
情況 A: 已知存在 Web Service, 客戶端的開發可以通過以下步驟 :

  1.通過 UDDI ,查找到 Client 程序需要的 Web Service 的位置
  2.通過 WebService 找到 WSDL 接口描述文件
  3 .通過工具,將步驟 2 得到的 WSDL 文件,生成一個 Client Stub, 這個實質上是代碼 , 也就是打了一個樁。把這個 stub 的代碼歸併到 Client 程序中 .
  4.每次 Client 需要調用 WebService 的時候,直接調用步驟 4 生成的 Stub 接口,就實現了對 Server 端的調用。

  情況 B: Server 端的開發,同樣無需做解析 SOAP 這樣的破事,框架會幫我們做好。大致步驟如下 :
  1.實現 WebServer 需要提供的所有功能
  2.利用 WSDL 文件 ( 或者 IDL) 生成 Server Stub, 這些代碼將負責接收從外界獲得的請求,並將其轉發給 Web Server 的 Service Implementation (實現代碼)。當 Service Implementation 的代碼處理完,產生結果之後,又會把結果交給 Server Stub, 然後 Server Stub 可以產生一個 SOAP 的響應 . Server Stub + Server Implementation 合在一起 , 稱爲 Web Service Container, 這玩意兒就是讓發送到 WebService 的 HTTP 請求,直接送到 Server Stub 上面的。
  



  這個世界上沒有知識是學不會的,不是嗎?如果一開始學不會,就可以把問題細化分解,然後學習更基本的知識。最後,所有問題都能變得和1+1=2一樣簡單,我們需要的只是時間。好了,最後給大家推薦一個學習Java的好網站JAVA自學網站–how2j.cn
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章