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
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