Salesforce SOAP vs REST

.net, c#, salesforce

Solution

The other answers contain some good general info, some salesforce specific things to take into account are

1) You can directly bulk update data in the SOAP API, but you'll need to use the Async Bulk API to do that from REST.

2) The soap API contains a few things not available in the REST API, most notably describeLayout, queryAll, getDeleted & getUpdated

3) the REST API contains a few things not available in the SOAP API, including the API for chatter, and access to the recently accessed records lists.

4) the REST API can access binary data (files, attachments, content, etc) without the overhead of base64 encoding/decoding.

So, depending on exactly what your app is trying to do may push you one way or the other.

Problem

I have been building a console app the uses the Saleforce SOAP API, and now need to use the Salesforce API in a web app. Am I correct to assume that SOAP is better suited for a non web-based app, and REST is better for a web app? If I where to create a wrapper that would be used in either reporting from local apps, or posting to salesforce from our websites, should I expose both the REST and SOAP api's, depending on what the app is? Or should I just stick to using one? What are deciding factors I should look at if I just need to pick one?

Original source