2012-04-11 17 views
5

Ho creato un'app console che utilizza l'API SOAP di Saleforce e ora è necessario utilizzare l'API Salesforce in un'app Web.Salesforce SOAP vs REST

Sono corretto supporre che SOAP sia più adatto per un'applicazione non basata sul Web e REST è migliore per un'app Web?

Se io dovessi creare un wrapper che verrebbe utilizzato nei rapporti da app locali, o postare in Salesforce dai nostri siti Web, dovrei esporre sia le API REST e SOAP, a seconda di cosa sia l'app? O dovrei limitarmi a usarne uno? Quali sono i fattori decisivi che dovrei considerare se dovessi sceglierne uno?

risposta

10

Le altre risposte contengono alcune utili informazioni generali, alcune cose specifiche Salesforce da prendere in considerazione sono

1) È possibile aggiornare i dati direttamente alla rinfusa nel API sapone, ma è necessario utilizzare l'API Bulk Async per farlo da REST.

2) L'API sapone contiene alcune cose non disponibili in API REST, soprattutto describeLayout, queryAll, getDeleted & getUpdated

3) l'API REST contiene alcune cose non disponibili in API SOAP, compresi l'API per le chatter e l'accesso agli elenchi dei record accessibili di recente.

4) l'API REST può accedere ai dati binari (file, allegati, contenuto, ecc.) Senza il sovraccarico di codifica/decodifica base64.

Quindi, a seconda esattamente ciò che la tua app sta cercando di fare, potresti spingerti in un modo o nell'altro.

+0

Sul punto 2, non è più vero che l'API REST non contiene quegli endpoint. Ad esempio, è possibile ottenere eliminato: http://www.salesforce.com/us/developer/docs/api_rest/Content/dome_get_deleted.htm – joshdick

3

Credo che finisca per essere una preferenza personale se la stai consumando da un'applicazione .NET, indipendentemente dal fatto che si tratti di un'app Web o meno.

Personalmente, vorrei andare con SOAP dato che .NET ha un sacco di funzionalità incorporate per consumare un servizio SOAP, costruisce tutti i prototipi di metodo per te e renderà lo sviluppo più veloce di te stesso a mano le richieste REST. .NET si occuperà dello smistamento di SOAP.

Per quanto riguarda la costruzione di un wrapper, è necessario prendere in considerazione il pubblico di destinazione, se il vostro target di riferimento è di altri sviluppatori di applicazioni .NET, quindi di esporre il proprio servizio WCF potrebbe essere una soluzione decente, WCF ha anche gli endpoint sia per SOAP o REST.

1

La decisione di utilizzare REST o SOAP quando entrambi sono disponibili di solito è legato alla:

  1. Gli strumenti e il linguaggio che si sta utilizzando per la propria applicazione
  2. la familiarità sia con stile
  3. Le prestazioni esigenze della tua applicazione (i payload JSON sono più piccoli dei payload XML)

Se le app "locali" chiamano i servizi dal lato server, a parità di tutti gli altri, yo Puoi almeno generare codice C# direttamente dal WSDL e questo rende più semplice l'uso dell'API SOAP (nessuna codifica manuale).

Se l'applicazione Web deve chiamare l'API direttamente dal lato client (browser), quindi utilizzare REST e lavorare con JSON. Questo sarà molto più semplice. Non sarebbe possibile riutilizzare lo stesso wrapper a prescindere, quindi nessun problema utilizzando due API diverse oltre al tempo necessario per apprenderle.

Se l'utilizzo dell'applicazione Web dell'API si trova sul lato server (non client), indirizzare sicuramente solo una singola API. WSDL se si desidera generare automaticamente il codice per chiamarlo, REST altrimenti per semplicità ed efficienza.

1

IMO, SOAP era uno standard creato come un architetto di messaggistica a contratto, I.e. Quando si passano messaggi basta usare questo "contratto". Era abbastanza generico da non abbracciare alcuna tecnologia particolare.

REST è una metodologia effettiva che abbraccia HTTP, è un modo di utilizzare GET, POST, PUT e DELETE per il suo potenziale massimo.

Non darei per scontato che uno sia migliore dell'altro, a cosa si riduce effettivamente utilizzando lo strumento giusto per il lavoro. Non farei una distinzione tra app basata sul web e non basate sul web. Perché SOAP o REST possono essere utili a entrambi.

Ecco alcune domande per le quali dovrei ottenere una risposta:
1) Chi è il mio cliente di destinazione. Microsoft Workshop Client, Java, tipo PHP.
2) Quali tipi di (Mancanza di un termine migliore.) "Endpoint" voglio esporre alla mia Api. (JSON, XML, Ajax, POX o tutto quanto sopra.)
3) Quali saranno i miei clienti con questa API? Hanno già clienti basati su SOAP. Se è così, SOAP è la strada da percorrere.
4) REST ti farà riflettere sulla progettazione dell'URL e quindi permetterà a un cliente di "mashup" di dati per costruire ciò di cui ha bisogno. Quindi se pensi che sia qualcosa che vuoi REST è la strada da percorrere.
5) REST utilizza "GET" in HTTP, ciò consente al client di memorizzare i risultati nella cache. "Il GET condizionale è quello che viene chiamato. Permette loro di mettere in cache un grosso oggetto, chiedere al server tramite un'intestazione (piccola) se l'ultimo aggiornamento corrisponde a ciò che è memorizzato nella cache, in caso affermativo. è memorizzato nella cache dell'ultima versione, può essere fatto in SOAP, ma REST è meglio per questo:

In ogni caso, si spera che questo ti dia i dati migliori, così puoi prendere la decisione migliore. tutto il resto fallisce puoi semplicemente fare entrambe le cose, ma dovrai affrontare due tipi di servizi (diverse metodologie) e un codice base per entrambi (può essere difficile, ma non così difficile)

Personalmente, ne sceglierei uno, quindi se hai mai bisogno dell'altro, brucia quel ponte e paga il debito tecnico per farlo

2

IMHO, se si sta sviluppando la soluzione da .NET come indica la domanda, SOAP è la strada da percorrere. I servizi REST sono utili perché mancano i requisiti di bulk e tool set che circondano SOAP e sono carini per lo sviluppatore di bootstrap senza l'accesso a strumenti di investimento pesanti come .NET. Concordo con gli altri commenti sul fatto che REST rispecchia più fedelmente la metodologia HTTP sottostante ed è più facile da leggere e analizzare in modo esplicito, ma non è qualcosa di cui doversi preoccupare all'interno di uno strumento come VS e .NET.

Inoltre, dal momento che a un certo punto sono presenti app per console che possono essere introdotte nel mix di comunicazione, potrebbe essere utile avere la flessibilità WCF per essere agganciata al trasporto e non legata a HTTP come si farebbe con REST.

Quindi davvero non credo che tu sia in grado di sfruttare i vantaggi di REST o essere influenzato dalle carenze di SOAP, quindi ha senso andare con l'opzione fortemente standardizzata che si adatta meglio al tuo strumento esistente impostato.

0

tardi per questo partito, ma solo una breve nota:

L'API Salesforce non è di tutto riposo: Io lo chiamerei Rest-ish. Ha query SQL-like in URL per alcune delle sue interfacce REST, quel genere di cose.

0

API SOAP:

A cosa serve? Integrazione dei dati dell'organizzazione con altre applicazioni tramite SOAP.

Quando usarlo? Esistono servizi middleware preesistenti che devono lavorare con WSDL e dati XML.

protocollo SOAP/WSDL formato dati XML comunicazione sincrona

REST API:

A cosa serve? Accesso agli oggetti dell'organizzazione utilizzando REST. Quando usarlo? Vuoi sfruttare l'architettura REST per integrarsi con la tua organizzazione. Nessun requisito WSDL. Adatto per applicazioni basate su browser, app mobili e applicazioni social altamente interattive. Protocollo REST Formato dati JSON, XML Comunicazione sincrona

Problemi correlati