2009-10-22 109 views
3

我從Web服務本身的開發中看到了哪些更好,SOAP或REST的問題。但是,從客戶角度來看,沒有多少關於利弊的討論。如果您要編寫一個應用程序,並且可以在兩種類似的Web服務API之間進行選擇,除了一個是SOAP,另一個是REST,您會選擇哪一個?爲什麼? REST具有允許XML或JSON的額外好處,這兩者之間是否還有其他主要區別?作爲客戶端的SOAP或REST

回答

6

哇,10個小時,至今沒有回答這個問題。通常這些類型的問題瞬間就會跳出來。

無論如何,這裏有點奇怪的回答你的問題。選擇應該取決於幾件事情:

  1. 這兩個API的文檔有多好。
  2. API有多可能發生變化。
  3. 我需要多少時間才能生產客戶端
  4. 客戶端可能需要多長時間才能使用。
  5. REST api文檔是否包含他們返回的XML/JSON的Url列表?

無論哪個API有更好的文檔可能是更好的API使用。這是不能保證的,但它是一個很好的指標。無論SOAP是否比REST更好,反之亦然,如果實施是垃圾,您將會遇到任何困難。

如果這是一個全新的由創業公司創建的API,可能會在明年發生重大變化,那麼REST API可能會更容易管理。由於生成的客戶端代理代碼,SOAP apis往往非常脆弱並且需要頻繁的客戶端重新編譯。

儘管我討厭客戶端生成的代理代碼有1001個原因,但如果您需要快速獲得某些工作。將你最喜歡的IDE指向WSDL的塊將會很快爲你提供一個對象模型。這無疑是最快捷的工作方式。

如果客戶將要在很多年左右,我相信這是值得投入時間來生產一個良好的REST客戶端。基於REST的方法對隨着時間推移而發生的不可避免的變化具有更強的適應能力。涉及版本REST客戶端的選項比基於SOAP的版本多得多。

對於REST API是否爲真正的REST接口,最後一項是有點試金石。如果文檔是http端點的目錄,那麼您可以確信設計人員不知道REST是什麼,因此請遠離它。

6

你在做一個有缺陷的假設。

你說:

如果你編寫一個應用程序 ,並有兩個Web 服務的API,是除了一個每 方式類似之間的選擇是SOAP和其他 是休息,這你會選擇和 爲什麼?

事實上,SOAP API很可能與REST系統完全不同,因此您無法在此級別進行真正的比較。

REST是一種架構,而不是協議。 SOAP是一種協議,但不是一種體系結構。雖然可能的話,但您不太可能在SOAP協議之上創建REST體系結構,因爲SOAP有效負載對REST系統並不提供太多支持。

SOAP系統傾向於更多基於RPC,REST系統是基於資源的。這兩者在操作上和設計上存在顯着差異。

就使用SOAP與基於HTTP的XML/JSON(許多人錯誤地與REST相混淆)而言,SOAP系統的主要優點是可以更容易地與系統進行連接和發佈。

今天,許多IDE和服務器可以輕鬆發佈和使用SOAP Web服務。

在Java中,發佈SOAP接口可能更多的是在文件中粘貼「@WebService」並對其進行部署。使用Web服務不僅僅是將WSDL指向WSDL(在Web服務發佈時爲您創建),單擊按鈕並使這些工具創建編組數據並與服務進行通信所需的代理。

XML/JSON over HTTP有一個好處,您可能會忽略大部分使自動化SOAP「簡單」的鍋爐板。當然,Javascript在使用JSON方面非常擅長,所以如果客戶端空間包含Web瀏覽器,那可能是一個因素。如果你說瀏覽器到服務器,XML/JSON over HTTP工作得很好,實際的REST架構也可以很好地工作。

如果您在服務器之間談論RPC,那麼由於當前可用的工具,SOAP實現起來要容易得多。