萬維網正經歷海量數據進化到基於服務的演進,其中web service正是此次演進的重要部分。web
web service是兩個設備跨越萬維網的鏈接方式。W3C給web service給出的定義是:支持跨越網絡的機器和機器之間交互的軟件系統。他有機器可理解格式表達的接口(好比WSDL)。與之交互的其餘系統根據預先定義的規則使用SOAP消息來交互,典型的,使用HTTP協議使用XML序列化來和其餘系統互聯。
Roy Fielding提出了更可靠的web應用架構:表示狀態轉移(REST)。在REST風格中,請求和應答是圍繞着資源的表示狀態來構建的。一個資源(好比:一我的),能夠是任何被定位的東西。資源的表示經常是一個文檔(好比XML或是JSON)表示當前或預期的資源狀態。瀏覽器
SOAP是用於實現Web Service時交換結構化信息的協議。它的消息格式使用XML。他和傳輸協議是不相關的(可使用HTTP,FTP,TCP,UDP,或者命名管道)。基於SOAP的服務嚴格的定義了來回傳遞的消息格式。一個SOAP消息上面含有數據和操做,頭信息和失敗的錯誤信息。由WS-Security提供安全標準,而後它是端對端的。SOAP提供了讓服務想客戶端描述本身的機制(WSDL),以及發現(UDDI)。SOAP一樣提供了可靠的消息機制(WS-ReliableMessageing),內建了重試並提供了端到端的可靠機制。安全
表示狀態轉移(REST)是一種用來設計網絡應用的架構風格。服務器
REST網絡API(或REST網絡服務)是使用HTTP和REST 原則實現的網絡API。RESTful API更關心用戶接口(而不是數據存儲)。提供了跨平臺和簡化服務組件(無狀態),每個來自客戶端的請求都包括所有的狀態信息,服務器不會再session中保存客戶的上下文。網絡
SOAP一個主要的有點是WSDL服務描述。能夠自動發現服務並生成服務代理客戶端。在版本2.0中,WSDL支持全部的HTTP謂詞並能很好的提供RESTful服務文檔,可是WSDL相對來講比較臃腫.
HTTPS對RESTful服務的安全提供支持,僅是point-to-point的。缺少標準的信息系統和異常處理。而SOAP具備內建的成功/重試機制,且提供end-to-end的基於SOAP的可靠機制。
RESTful服務一個主要的有點是其數據表示的靈活性,好比你能夠序列化你的數據到XML或JSON格式。RESTful API是易於理解的,一個使用URI的元素+HTTP謂詞。
同時RESTful服務也是輕量的,相比xml,沒有額外的標籤。調用RESTful API時,只須要一個瀏覽器或任何一臺聯網的設備。session