IMO,SOAP是一個創建爲合同類型消息傳遞架構師的標準,即,傳遞消息時只需使用這個「合同」。它是通用的,它不包含任何特定的技術。
REST是一種包含HTTP的實際方法,它是一種利用GET,POST,PUT和DELETE來實現最大潛力的方法。
我不會假設其中一個比另一個更好,它真正歸結爲使用正確的工具。我不會區分基於Web的應用程序和非基於Web的應用程序。因爲SOAP或REST對兩者都有好處。
以下是我將首先回答的幾個問題:
1)誰是我的目標客戶。 Microsoft Workshop Client,Java,PHP類型。
2)什麼類型(缺少更好的術語。)「終結點」我想暴露給我的Api。 (JSON,XML,Ajax,POX或以上所有)。
3)我的客戶將使用此API做什麼?他們是否擁有基於SOAP的客戶端?如果是這樣,SOAP就是要走的路。
4)REST會讓你考慮你的URL設計,從而允許客戶端「混搭」數據來構建他們需要的東西。所以,如果你認爲那是你想要的東西。 REST是要走的路。
5)REST使用HTTP中的「GET」,這允許客戶端緩存結果。 「Conditional GET就是它的名字,它允許它們緩存一個大對象,如果最後一次更新與緩存匹配,就通過一個頭部(小)詢問服務器,如果是這樣的話,不要擔心一個完整的對象GET,什麼緩存是最新版本,這可以在SOAP中完成,但開箱即用,REST更適合這種情況。
無論如何,希望能夠爲您提供更好的數據,以便您做出更好的決定。所有其他方法都失敗了,你可以同時做兩個,但是你必須要處理兩種類型的服務(不同的方法)和兩個代碼庫(可能會很棘手,但並不困難)
就個人而言,我會選擇一個,如果你需要另一個,那麼就燒掉那座橋,並支付技術債務。
在#2點上,REST API不包含那些端點。例如,您可以取消刪除:http://www.salesforce.com/us/developer/docs/api_rest/Content/dome_get_deleted.htm – joshdick 2015-04-06 17:05:14