簡單來說, Web Service (一下簡稱 WS )就是不同伺服器間調用資源的一種方法。
與之對應的是本地服務,但本地服務存在缺陷:本地資源不足、成本因素、可移植性差等。
而 WS ,平台無關,不管什麼平台都能使用 WS ;程式設計語言無關,無論使用什麼語言,只要遵守相關協議,就可以調用 WS 暴露的 API 。
目前 WS 有兩種實現方法使用最多,一種是 Restful WebService ,一種是 XML-RPC WebService 。
下面先說下大家熟悉的 XML 格式
(一)XML-RPC Web Service
1. 何時使用
WS 在跨平台和跨網路進行通訊時,是非常有用的。
2. 原理
實際上是一個應用程式,向外界暴露一個能通過 web 進行調用的 API ,可以使用任何語言。
服務端:
服務端產生 wsdl 檔案,描述介面及訪問方式。接受用戶端發來的 SOAP 請求訊息,解析其中的方法調用和參數格式,調用相應業務完成指定功能,並把傳回值放入 SOAP 回應訊息返回給調用者。
用戶端:
取得服務端的服務描述語言檔案( WSDL ),解析該檔案,瞭解服務端的調用資訊及方式。根據需要,產生恰當的 SOAP 請求(指定調用的方法、參數),發送到服務端,等待 SOAP 回應訊息, 解析傳回值。
3. WSDL :
怎樣向別人介紹你的 WS有什麼功能,以及每個函數調用時的參數呢,這就是 WSDL ,描述介面及訪問方式的檔案。
4. WSDL 和 SOAP 的關係
SOAP 是個通訊協定, SOAP 在 HTTP 協議的基礎上,把編寫成 XML 的 REQUEST 參數 , 放在 HTTP body 上提交個 WS伺服器 (servlet , ASP 什麼的 ) 處理完成後,結果也寫成 XML 作為 response 送回使用者端, 為了使使用者端和 WS可以相互對應,可以使用 WSDL 作為這種通訊方式的描述檔案,利用 WSDL 工具可以自動產生 WS 和使用者端的架構檔案, SOAP 具備把複雜對 象序列化捆綁到 XML 裡去的能力。
SOAP 的前身是 RPC, 就是遠程呼叫處理的協議,這個協議安全性不是很好,多數防火牆都會阻擋 RPC 的通訊包,而 SOAP 則使用 HTTP 協議作為基本的協議,使用連接埠 80 使得 SOAP 可以透過防火牆,完成 RPC 的功能。
SOAP 協議和 HTTP 協議一樣,都是底層的通訊協定,只是請求包的格式不同而已, SOAP 包是 XML 格式的。
(二) RESTful Service
1.基本介紹
Restful WebService 是符合REST(Representational State Transfer) 風格的Web 服務架構。REST Web 服務是面向資源的服務,可以通過統一資源識別項(Universal Resource Identifier, URI )來識別和定位資源,並且針對這些資源而執行的操作是通過HTTP 規範定義的。XML-RPC WebService 指就是傳統的基於SOAP 、UDDI 、WSDL 的WebService 。
Restful WebService 充分利用了現有的web 基礎設施,從而提高了網路效率。
2.實現方式
RESTful WebService 的實現方式有多種,abdera 、resteasy 。
abdera 開發複雜,resteasy 本身也是jboss 產品,所以當伺服器使用的是jboss 時,實現更適合用resteasy ,開發簡單,只需在類和方法指定資源路徑。