1. 程式人生 > >SOA介面的兩種常用實現比較:SOAP vs REST

SOA介面的兩種常用實現比較:SOAP vs REST

    SOA架構用於異構系統的協作,因此需要一種跨作業系統、跨語言的通用的訊息交換格式。SOAP和REST都是基於文字的訊息體,相比二進位制訊息而言具有跨平臺的優勢,因此被選作SOA介面的常用實現方法。但SOAP和REST又有各自不同的特點和用途。

    SOAP:將HTTP協議作為傳輸層協議,本質是採用HTTP進行傳輸,使用XML封裝訊息內容的RPC呼叫。

REST:REST並不是一種協議,只是一種設計規範,該設計規範要求程式遵守HTTP協議最初設計的初衷,使用HTTP的GET/PUT/DELTET/POST對資源進行操作,REST介面是以URI資源為基礎,對資源進行CRUD操作的介面。

SOAP和REST的對比:

  • SOAP相對REST來說較為重量級,由於採用XML格式的訊息體,訊息的有效負荷佔比較REST常用的JSON少,不過XML訊息的好處是較JSON來說更容易為人閱讀。
  • SOAP介面是自解釋的,採用WSDL進行描述,程式可以基於WSDL進行解釋並自動生成SOAP呼叫程式碼;REST介面只能通過介面文件進行描述,難以做到程式解釋介面定義。
  • SOAP採用HTTP作為傳輸層協議,對HTTP協議來說服務呼叫是透明的,防火牆上難以對SOAP進行細粒度的許可權控制,也難以使用http的快取機制提高效率。而REST是標準的HTTP訪問,可以充分利用HTTP協議提供的一些好處,例如可以在防火牆上較好地進行許可權控制(最小粒度可以基於每個URL的CRUD操作),也可以充分利用快取提高響應速度和系統的吞吐效率。
  • 由於REST是標準的HTTP訪問,其適用性更廣,web應用,移動應用都可以在不使用第三方庫的情況下方便地使用REST介面構造應用程式。
  • 對於移動程式而言,由於REST的有效負荷佔比高於SOAP的XML封裝,採用REST介面可以降低程式使用的頻寬。
  • 根據REST設計原則,介面是無狀態的,因此可以簡單地通過對伺服器進行水平擴充套件提升服務能力。
對於WEB Service而言,SOAP和REST各有千秋,SOAP有完善的標準規範和自動化開發工具,REST則更簡單,對移動應用更友好。Oracle SOA Suite提供了將SOAP轉換為REST介面的快捷方法,可以為已有的SOAP介面提供REST形式的封裝,為web service同時提供SOAP和REST介面,是一個綜合了各方面優點的完善的解決方案。