SOAP和REST

http://blog.csdn.net/andyxhua/archive/2008/03/24/2212562.aspx

記錄下來,證明自己度過

一直想比較一下這兩種風格,卻不知如何落筆,最終寫成了如下的FAQ形式。

什麼是SOAP?
簡單對象訪問協議,基於XML,是一種應用協議,可以跨多種傳輸協議來傳遞消息(比如HTTP、SMTP),Soap是針對RPC的解決方案。
Soap的初衷是作爲一種輕量級解決方案出現的,採用xml格式定義過程調用和返回,一個Soap消息就是一個特定格式和內容的XML文檔。

什麼是Restful web service?
Rest是針對Web提出的一種架構風格,Restful web service本質上就是Web,任意一個URL地址,一個HTTP網頁都可以稱作是Restful web service。Rest把網絡上的所有事物抽象爲資源,把對資源的操作抽象爲CRUD,對應HTTP的PUT,Get,Post,Delete。注意此處的資源不是靜態的數據,而是數據加上狀態,是隨時間變化的,每個資源有一個唯一的標識,URL。

Rest提出了一些設計概念和準則:
      1、網絡上的所有事物都被抽象爲資源(resource);
        2、每個資源有一個唯一的資源標識(resource identifier);
        3、通過通用的連接器接口(generic connector interface)對資源進行操作;
      4、  對資源的各種操作不會改變資源標識;
        5、所有的操作都是無狀態的(stateless)。
什麼是架構風格?
來自Roy Thomas Fielding博士的定義:
一種架構風格是一組協作的架構約束,這些約束限制了架構元素的角色和功能,以及在任何一個遵循該風格的架構中允許存在的元素之間的關係。我覺得可以這麼來理解:
架構風格是接口
如果說架構是一個對象, 那麼架構風格就好比是一組接口,一個特定的架構可能實現了多種架構風格,一種架構風格也可能是繼承了多個基本架構風格的混合風格。
架構風格是模式
存在一組基本的架構風格,每個基本風格適用於特定的設計場景,設計師可以根據具體的應用需求進行取捨,對基本風格進行取捨、組合,確定適用於具體的需求的架構設計。而實際的軟件架構就是架構設計的具體實現。

Soap是Rest風格的一種實現嗎?
當然不是。
1、Soap也可以看作是一種風格,面對的應用需求是RPC,而Rest面對的應用需求是分佈式超媒體系統(Web)。
2、Rest架構風格更強調數據,請求和響應消息都是數據的封裝。而Soap風格更強調接口,Soap消息封裝的是過程調用。REST是面向資源的,而Soap是面向接口的。
3、REST架構下,HTTP是承載協議,也是應用協議,而Soap架構下,HTTP只是承載協議,Soap纔是應用協議。

什麼時候用Soap?什麼時候用REST?
1、過程調用用soap。如果服務是作爲一種功能提供,客戶端調用服務是爲了執行一個功能,用Soap,比如常見的認證授權。而數據服務用REST。
2、可以定義清晰明瞭的正式接口的情況下,用Soap,比如在企業應用中,系統間的耦合採用面向接口的方式。
3、要更多的考慮非功能需求,比如安全、傳輸、協作等需求,使用Soap。
4、低帶寬,客戶端的處理能力受限的場合,比如在PDA,手機上消費服務,用REST。

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