2011-09-22 106 views

回答

16

通過 「基於SOAP服務」 我假設你的意思WS-I Basic Profile Web服務。區別很重要,因爲SOAP可以與REST以及WS-I BP Web服務一起使用。讓我解釋。

SOAP是一種基於XML的消息傳遞格式,用於交換數據。肥皂還定義了一種進行遠程過程調用的方法。 SOAP是W3C的開放標準。 SOAP對於底層傳輸層是不可知的。 HTTP常常被用作傳輸層,但它可以愉快地運行SMTP和TCP以及其他傳輸。

REST是一種架構風格(不是標準),所以請小心不要直接比較REST和SOAP,因爲您不會將蘋果與蘋果進行比較。 REST採用HTTP並且使用它是它被使用的方式,具有所有的微妙和豐富性。 REST架構風格可用於以任何格式傳輸數據 - 它不會強制使用任何特定的數據格式。所以SOAP對於REST風格的Web服務來說是一個非常好的序列化格式。但是許多人在REST中使用JSON,XML,純文本和其他格式。您也可以愉快地通過REST交換二進制數據,例如圖像文件。好的是你可以選擇對你的應用程序最有意義的數據格式。

請注意,由於REST是一種模式,而不是標準,因此對於真正意義上的RESTful意味着什麼意義存在很多爭議。有一個名爲Richardson Maturity Model的概念,它給出了REST理想的一系列步驟。通過與Richardson模型進行比較,我們可以清楚地看到REST實現是如何實現的。 WS-I BP Web服務在此級別上處於級別0(即,根本不是非常RESTful,僅使用HTTP作爲啞傳輸層)。

我會說這個關於選擇REST和WS-I Basic Profile網絡服務 - 這取決於你的觀衆。如果您在企業內部開發B2B類型接口,則更常見的是看到WSI-BP Web服務。由於存在基礎標準,並且由於企業供應商(如IBM,Oracle,SAP,Microsoft)的成熟支持,並且由於特別在.NET和Java中提供了框架支持,因此WSI-BP具有很大意義當您需要快速獲得某些內容時,並且希望讓客戶端在企業環境中輕鬆連接,並且交換的數據是業務數據,這些數據可以很好地作爲SOAP序列化。另一方面,如果您將Web服務暴露給更廣泛的Web受衆,我會說從WSI-BP到REST風格已經有了一個趨勢。由於REST僅假設客戶端支持HTTP,因此可以與最廣泛的受衆進行互操作。 REST還爲您提供了網絡本身的可擴展性,並支持資源緩存等,這使得它可以比WSI-BP網絡服務更好地擴展到大量用戶。

+1

多麼令人愉快的理智答案。 –

+0

的確,很好的答案。 –

+0

@saille:謝謝你。現在事情似乎更容易。 – xyz

相關問題