SOA接口的兩種經常使用實現比較:SOAP vs REST

SOA架構用於異構系統的協做,所以須要一種跨操做系統、跨語言的通用的消息交換格式。SOAP和REST都是基於文本的消息體,相比二進制消息而言具備跨平臺的優點,所以被選做SOA接口的經常使用實現方法。但SOAP和REST又有各自不一樣的特色和用途。web

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操做),也能夠充分利用緩存提升響應速度和系統的吞吐效率。ui

因爲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接口,是一個綜合了各方面優勢的完善的解決方案。

相關文章
相關標籤/搜索