2012-04-11 110 views
5

我一直在構建一個使用Saleforce SOAP API的控制檯應用程序,現在需要在Web應用程序中使用Salesforce API。Salesforce SOAP vs REST

我正確地認爲SOAP更適合於非基於Web的應用程序,而REST更適合Web應用程序嗎?

如果我在哪裏創建一個可用於從本地應用程序進行報告或從我們的網站發佈到salesforce的包裝,我應該公開REST還是SOAP API,具體取決於應用程序的內容?或者我應該堅持使用一個?如果我只需要選擇一個,我應該考慮哪些決定因素?

回答

10

其他的答案包含了一些很好的通用信息,一些銷售人員具體的事情要考慮到被

1)您可以將SOAP API直接批量更新數據,但你需要使用異步大宗原料藥從REST做到這一點。

2)SOAP API包含了REST API所不具備的幾件事情,最明顯的是describeLayout,queryAll,getDeleted & getUpdated

3)REST API包含了SOAP API,包括不具備的幾件事聊天記錄的API以及對最近訪問的記錄列表的訪問。

4)REST API可以訪問二進制數據(文件,附件,內容等),而無需base64編碼/解碼的開銷。

所以,取決於你的應用程序試圖做什麼可能會推動你的方式或其他。

+0

在#2點上,REST API不包含那些端點。例如,您可以取消刪除:http://www.salesforce.com/us/developer/docs/api_rest/Content/dome_get_deleted.htm – joshdick 2015-04-06 17:05:14

3

我相信它最終會成爲個人偏好,如果您正在使用.NET應用程序來使用它,無論它是否是Web應用程序。我個人會使用SOAP,因爲.NET有很多內置的功能來使用SOAP服務,它爲您構建了所有的方法原型,並且使開發速度比您自己手工製作REST請求更快。 .NET將負責SOAP的編組。如果您的目標受衆是其他.NET應用程序開發人員,那麼公開您自己的WCF服務可能是一個不錯的選擇,WCF也有端點用於SOAP或REST。

1

使用REST或當兩者都可用SOAP的決定通常涉及到:

  1. 的工具和語言,你正在使用你的應用程序
  2. 你要麼與風格
  3. 性能熟悉(JSON有效載荷小於XML有效載荷)

如果'本地'應用程序正在從服務器端調用服務,那麼其他所有條件都相等,yo你至少可以直接從WSDL生成C#代碼,並且使得SOAP API更簡單(無需手動編碼)。

如果Web應用程序需要直接從客戶端(瀏覽器)調用API,那麼請使用REST並使用JSON。這將會更簡單。無論如何,您都無法重複使用相同的包裝,因此除了學習它們所花費的時間外,使用兩種不同的API並沒有什麼問題。

如果API的Web應用程序使用情況在服務器端(而非客戶端),那麼絕對只針對一個API。 WSDL,如果你想自動生成代碼來調用它,REST,否則爲了簡單和效率。

1

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

恕我直言,如果您正在從.NET開發解決方案,就像您的問題所指出的那樣,SOAP就是要走的路。 REST服務是有益的,因爲它們缺乏圍繞SOAP的大容量和工具集要求,並且對於引導程序開發人員來說很好,而無需訪問像.NET這樣的大型投資工具。我同意其他評論,REST更貼近地反映了底層的HTTP方法,並且更容易閱讀和明確解析,但這並不是真正需要從VS和.NET這樣的工具中關注的東西。

此外,由於您現有的控制檯應用程序可能會在某些時候進入通信組合,因此可能很適合讓WCF靈活性與傳輸無關,而不像綁定到REST那樣綁定到HTTP。

所以我真的不認爲你有能力利用REST的優勢或受到SOAP缺陷的影響,所以選擇最適合現有工具的嚴格標準化選項是有道理的組。

0

末到本方,而只是一個快速注:

Salesforce的API並不完全基於REST:我會稱之爲REST十歲上下。它在某些REST接口的URL中有類似於SQL的查詢,就是這樣的。

0

SOAP API:

這是幹什麼用的?使用SOAP將組織的數據與其他應用程序集成。

何時使用它?您有預先存在的中間件服務需要使用WSDL和XML數據。

協議SOAP/WSDL XML數據格式 通信同步

REST API:

這是什麼呢?使用REST訪問組織中的對象。 何時使用它?您希望利用REST架構與您的組織進行整合。 沒有WSDL要求。 非常適合基於瀏覽器的應用程序,移動應用程序和高度互動的社交應用程序。 協議REST 數據格式JSON,XML 通信同步