http://www.ibm.com/developerworks/cn/webservices/ws-whichwsdl/
對比服務的兩類方式:一類是同步或者遠程過程調用(RPC)方式;另一類是異步或者消息(文檔)方式
同步服務:同步服務的客戶端將它們的請求表示爲帶變量的方法調用,方法返回一個包含返回值的響應。這意味着,當客戶端發送一個請求時,它會首先等待響應消息,然後纔會繼續向下運行。這就使得整個調用不是完全成功就是完全失敗。加入某個操作由於某種原因不能成功,則其他所有的依賴操作也將失敗。由於在客戶端和服務之間的雙向通信,RPC類型的服務在客戶端和服務提供者之間需要緊耦合的通信模式。當應用程序具有下列特性時,通常將用到RPC類型的Web Service:
- 調用服務的客戶端需要一個立即的響應
- 客戶端與服務以反覆對話的方式進行寫作
典型RPC類型的同步服務例子包括:返回特定股票的當前價格,提供特定地區的當前天氣情況
異步服務:異步服務是文檔類型的服務或消息驅動類型的服務。當客戶端調用消息類型的服務時,客戶端通常發送整個文檔,諸如訂購單,而不是單獨發送一些參數。服務收到整個文檔後,會處理它,然後返回(也可能不返回)一個結果消息。調用異步服務的客戶端在繼續運行應用程序的其他部分之前,不需要等待響應,從服務發出的響應可以在數小時甚至數天後纔出現。
在鬆耦合環境中,異步交互(消息)是一個核心設計模式。消息使得應用所處的鬆耦合環境既不需要了解如何進行通信的技術細節,也不需要了解其他應用程序的藉口。這使得任何兩個流程之間的通信操作可以是自包含的、獨立的工作單元。當應用程序具有些列特性時,通常需要使用文檔類型的Web Service:
- 客戶端不需要(不期待)立即的響應。
- 服務是面向文檔的(客戶端通常發送一個完整的文檔,例如訂購單,而不是發送一些離散參數)。
文檔類型的Web Service 的例子包括訂購單處理、響應客戶的詢價請求、響應一個特定顧客的訂購等。在所有這些情況中,客戶端向Web Service發送一個完整的文檔,諸如訂購單,然後假定Web Service以某種方式正在處理,但是客戶並不需要一個立即的回覆。