Rispondere alla domanda aggiornata del 2012 (con la seconda ricompensa) e rivedere i risultati di oggi (altre risposte).
SAPONE, pro e contro
Informazioni su SOAP 1.2, vantaggi e svantaggi rispetto a "REST" ... Bene, dal 2007
è possibile descrivere i servizi Web REST con WSDL e utilizzare il protocollo SOAP ... Cioè, se si lavora un po 'di più, tutti gli standard W3C di lo stack del protocollo dei servizi Web può essere REST !
È un buon punto di partenza, perché possiamo immaginare uno scenario in cui tutte le discussioni filosofiche e metodologiche sono temporaneamente evitate. Possiamo confrontare tecnicamente "RIPOSO SAPONE" con "RIPOSO NON SOAP" in servizi simili,
SOAP-REST (= "REST-SOAP"): come mostrato da L.Mandel , WSDL2 può descrivere un servizio web REST e, se supponiamo che XML esemplificato possa essere avvolto in SOAP, tutta l'implementazione sarà "SOAP-REST" .
NON-SOAP-REST : qualsiasi servizio web REST che non può essere SOAP ... Cioè, "90%" degli esempi REST noti. Alcuni non usano XML (ad esempio i tipici REST AJAX usano JSON invece), altri usano altre strutture XML, senza le intestazioni o le regole SOAP. PS: per evitare l'informalità, possiamo supporre il livello REST 2 nei confronti.
Naturalmente, per confrontare più concettualmente, confronta "NON-REST-SOAP" con "NON-SOAP-REST", come approcci di modellazione diversi. Quindi, completando questa tassonomia dei servizi Web:
NON-REST-SOAP : qualsiasi servizio web SOAP che non può essere REST ... Cioè, "90%" degli esempi SOAP ben noti.
NON-REST-NEITHER-SOAP : sì, l'universo della "modellazione dei servizi Web" comprende altre cose (es. XML-RPC ).
SAPONE nelle condizioni REST
Confronto di cose comparabili: SOAP-REST con NON-SOAP-REST .
PROFESSIONISTI
Spiegando alcuni termini,
Stabilità contrattuale : per tutti i tipi di contratti (come "accordi scritti"),
Con l' uso di standar : tutti i livelli dello stack W3C sono reciprocamente conformi. REST, d'altra parte, non è uno standard W3C o ISO e non ha dettagli normati sulle periferiche di servizio. Così, come ho detto prima @DaveWoldrich (20 voti), @cynicalman (5), @Exitos (0), in un contesto in cui sono NECESSARIE NORME, è necessario il SAPONE.
Con l' uso delle migliori pratiche : l '"aspetto dettagliato" delle implementazioni dello stack del W3C , traduce importanti accordi umani / legali / giuridici.
Robustezza : la sicurezza della struttura e delle testate SOAP. Con la comunicazione metada (con la piena espressività di XML) e la verifica hai una "polizza assicurativa" contro qualsiasi cambiamento o rumore.
SOAP ha "l'affidabilità transazionale (...) che si occupa degli errori di comunicazione. SOAP ha più controlli sulla logica dei tentativi e quindi può fornire più affidabilità end-to-end e garanzie di servizio", E. Terman .
Ordinamento dei professionisti per popolarità,
Strumenti migliori (~ 70 voti): SOAP attualmente ha il vantaggio di strumenti migliori, dal 2007 e ancora dal 2012, perché è uno standard ben definito e ampiamente accettato. Vedi @MarkCidade (27 voti), @DaveWoldrich (20), @JoshM (13), @TravisHeseman (9).
Conformità di Standars (25 voti): come ho detto prima, @DaveWoldrich (20 voti), @cynicalman (5), @Exitos (0), in un contesto in cui sono NECESSARI STANDARD, hai bisogno di SAPONE.
Robustezza : assicurazione delle intestazioni SOAP, @JohnSaunders (8 voti).
CONS
La struttura SOAP è più complessa (oltre 300 voti): tutte le risposte qui, e le fonti su "SOAP vs REST", manifestano un certo disprezzo per la ridondanza e la complessità di SOAP. Questa è una conseguenza naturale dei requisiti per la verifica formale (vedi sotto) e per la solidità (vedi sopra). "REST NON-SOAP" (e XML-RPC, il creatore di SOAP ) può essere più semplice e informale.
La restrizione "solo XML" è un ostacolo alle prestazioni quando si utilizzano piccoli servizi (~ 50 voti): vedere json.org/xml e questa domanda , o quest'altra . Questo punto è mostrato da @toluju (41) e altri.
PS: poiché JSON non è uno standard IETF , ma possiamo considerare uno standard di fatto per la comunità del software web.
Servizi di modellazione con SOAP
Ora, possiamo aggiungere SOAP-NON-REST con confronti NON-SOAP-REST e spiegare quando è meglio usare SOAP :
Necessità di standard e contratti stabili (vedere la sezione "PRO"). PS: vedi un tipico "bisogno B2B di standard" descritto da @saille .
Necessità di strumenti (vedere la sezione "PRO"). PS: gli standard e l'esistenza di verifiche formali (vedi sotto) sono questioni importanti per l'automazione degli strumenti.
Elaborazione parallela pesante (vedere la sezione "Contesto / Fondamenti" di seguito): con processi più grandi e / o più lenti, indipendentemente da un po 'più di complessità di SOAP, affidabilità e stabilità sono gli investimenti migliori.
Hai bisogno di più sicurezza : quando è richiesto più di HTTPS e hai davvero bisogno di funzionalità aggiuntive per la protezione, SOAP è una scelta migliore ( vedi @Bell , 32 voti). "Invio del messaggio lungo un percorso più complicato della richiesta / risposta o su un trasporto che non coinvolge HTTP", S. Seely . XML è un problema fondamentale, che offre standard per la crittografia XML , la firma XML e la Canonicalizzazione XML e, solo con SOAP, è possibile incorporare questi meccanismi in un messaggio secondo uno standard ben accettato come WS-Security .
Hai bisogno di maggiore flessibilità (meno restrizioni): SOAP non necessita di corrispondenza esatta con un URI; non limitato a HTTP; non è necessario limitare a 4 verbi. Come dice @TravisHeseman (9 voti), se volevi qualcosa di "flessibile per un numero arbitrario di tecnologie e usi client", usa SOAP.
PS: ricorda che XML è più universale / espressivo di JSON (et al).
Necessità di verifiche formali : importante capire che lo stack W3C utilizza metodi formali e REST è più informale. La descrizione del servizio WSDL (un linguaggio formale ) è una specifica formale delle interfacce dei servizi Web e SOAP è un protocollo affidabile che accetta tutte le possibili prescrizioni WSDL.
CONTESTO
Storico
Per valutare le tendenze è necessaria la prospettiva storica. Per questo argomento, una prospettiva di 10 o 15 anni ...
Prima della standardizzazione del W3C, ci sono alcune anarchie. È stato difficile implementare servizi interoperabili con diversi framework e più difficile, costoso e dispendioso in termini di tempo per implementare qualcosa di interoperabile tra le società. Gli standard dello stack del W3C sono stati una luce, un nord per l'interoperabilità di insiemi di servizi web complessi.
Per le attività quotidiane, come implementare AJAX, SOAP è pesante ... Quindi, la necessità di approcci semplici deve eleggere un nuovo framework teorico ... E grandi "lettori di software Web", come Google, Amazon, Yahoo e altri hanno eletto la migliore alternativa, ovvero l'approccio REST. È stato in questo contesto che il concetto REST è arrivato come un "quadro concorrente" e, oggi (2012), questa alternativa è di fatto uno standard per i programmatori.
Fondazioni
In un contesto di Parallel Computing, i servizi Web forniscono attività secondarie parallele; e protocolli, come SOAP, garantiscono una buona sincronizzazione e comunicazione. Non "nessun compito": i servizi web possono essere classificati come
parallelismo a grana grossa e imbarazzante .
Man mano che l'attività diventa più grande, diventa meno "dibattito sulla complessità" e diventa più rilevante la solidità della comunicazione e la solidità dei contratti.