Come convinco il mio capo a usare REST su SOAP? [duplicare]

37

Abbiamo bisogno di creare un'API per il nostro sistema. Come faccio a convincere il mio capo che REST è un'opzione migliore di SOAP (o XML-RPC)?

Dico REST è ...

  • più facile da implementare e mantenere
  • non c'è molto di nuovo da imparare - plain old HTTP
  • molte persone l'hanno scelto Yahoo ~ Facebook ~ Twitter
  • sarà molto più veloce da codificare

Il mio capo dice che SOAP è ...

  • più ricco e più espressivo
  • è tutto XML standard (SOAP, WSDL, UDDI) - e quindi sarà più facile da consumare
  • ben standardizzato di REST
  • Google utilizza molto SOAP
  • è importante aderire agli standard SOAP piuttosto che creare uno schema XML personalizzato in REST
posta treecoder 08.08.2011 - 15:08
fonte

7 risposte

66

Da un ragazzo che ha utilizzato ampiamente sia il SOAP che REST ...

BOSS says SOAP is...

richer and more expressive

Ogni volta che qualcuno dice che un prodotto è "ricco", voglio diventare violentemente malato. Non riesco a pensare ad un commento più cliché da fare su una tecnologia o piattaforma. Fondamentalmente stai dicendo "Penso che questo prodotto sia ottimo, ma non ho alcun dato reale per eseguire il backup ." Non so cosa intenda per "espressivo", quindi non posso davvero commentarlo ...

it's all standard XML (SOAP, WSDL, UDDI) -- and so will be easier to consume

Questo è palesemente falso. SOAP può essere schizzinoso, soprattutto quando si entra in cose come tipi complessi e intestazioni di autenticazione. Questo è particolarmente vero quando si inizia a fare una comunicazione cross-language: ottenere PHP per consumare e comunicare correttamente con un servizio SOAP .NET che utilizzava tipi complessi e l'autenticazione è stato un esercizio di horror da tastiera che mi fa svegliare in un sudore freddo ad oggi. REST è decisamente più facile da consumare: basta fornire l'URL e fatto! Hai i tuoi dati! Ci sono alcuni svantaggi a questo, a seconda delle tue esigenze, ma per molti servizi web questo è tutto ciò che è necessario.

well standardized than REST

È "standardizzato" dal fatto che ha uno schema. Questo è tutto. A parte questo, continuerai a lavorare con i dati di qualcun altro , che non è mai un picnic, indipendentemente dal protocollo di comunicazione che usi. E REST ha uno standard - è chiamato HTTP . Funziona piuttosto bene.

Google uses a lot of SOAP

Sono usati per usare SOAP (potrebbero ancora per alcuni prodotti, ma non molti). La maggior parte dei loro servizi Web è solidamente basata su REST. Ecco un link che mostra che hanno abbandonato un servizio SOAP a favore di REST.

it is important to adhere to SOAP standards than to create a custom XML schema in REST

Questo sembra uno di quei commenti fatti dai superiori con una comprensione limitata della tecnologia attuale. Ci sarà solo una parte del pacchetto SOAP standardizzato: l'intestazione del messaggio e il wrapper del corpo. Tutto in mezzo è il tuo XML. Devi ancora creare il tuo messaggio. Il messaggio in sé non è conforme allo standard specifico. È ancora un oggetto serializzato o un gruppo di oggetti.

Come nota conclusiva, SOAP versus REST è un grande argomento, uno senza una risposta concreta e probabilmente otterrai risposte diverse a seconda di chi parli. In effetti, non posso dire con certezza che nel tuo caso specifico che REST WILL sia migliore, ma posso dire che gli argomenti dei tuoi capi sono deboli e sono indicativi di una mancanza di comprendere la distinzione tra i due. Ho usato entrambe le tecnologie e la mia conclusione, dura e veloce, è questa: non ci sono conclusioni difficili e veloci e, come molte altre decisioni tecniche, dipende dalle esigenze dell'organizzazione. La soluzione migliore, in realtà, è una ricerca ponderata, una discussione aperta tra le persone che lavorano al progetto per trovare la soluzione migliore e una visione onesta delle tue esigenze.

Ecco alcuni link a discussioni esistenti che possono essere utili.

link

link

link

    
risposta data 08.08.2011 - 15:44
fonte
14

SOAP o REST? Altre risposte fanno un buon lavoro per aiutarti a discutere il punto da una prospettiva tecnica. Tuttavia, prevedo che un KO è improbabile semplicemente perché tecnicamente potresti fare la maggior parte delle cose con entrambi gli approcci. Ci sono alcune eccezioni che possono portare a un knockout tecnico per esempio:

  • se le richieste API devono essere instradabili tramite il middleware di messaggistica esterno pur consentendo al destinatario di autenticare e verificare il mittente originale, SOAP vince
  • se si desidera utilizzare l'autenticazione dell'applicazione e la logica di controllo dell'accesso, REST può essere virtualmente un NOP, mentre per SOAP può essere un mini-progetto a sé stante.

Se non hai uno di questi requisiti eccezionali da non perdere e visto che non sei il capo (!), penso che il meglio che puoi sperare sia un pareggio perché, sebbene la decisione appaia "tecnica" rimarrà soggettivo.

Ma .. se vuoi prendere la decisione migliore (e non solo vincere una discussione), forse puoi spingere a guardare questo, con il tuo capo, in un modo diverso:

Poiché "hai bisogno di creare un'API per il nostro sistema", suppongo che questo non sia solo un dettaglio tecnico interno del tuo sistema e "Gli argomenti tecnici sono per tecnici - cioè, persone che faranno il lavoro "non si applica. C'è un gruppo di persone là fuori da qualche parte che dovrà affrontare qualunque cosa tu trasporti, e penso che probabilmente ti piacerebbe che lo usassero e lo amassero? In tal caso:

Ciò di cui hanno bisogno per l'API probabilmente supera qualsiasi argomento tu o il tuo capo possano venire in mente (almeno questo è quello che penserebbero)

es. se vogliono integrarsi con la tua API tramite BizTalk o somesuch, allora forse SOAP lo è (documento letterale e tutto). Ma se sono programmatori che scriveranno alla tua API, SOAP potrebbe essere la campana a morto per l'adozione, mentre REST ti renderà eroi.

Se sai già chi sono queste persone, penso che dovresti chiedere loro di cosa hanno bisogno da un'API. Se si tratta di un "nuovo mercato", allora forse prova a intrecciare i migliori rappresentanti che puoi trovare, o almeno provare a descrivere e capire che cosa significherà "l'ambiente del cliente rappresentativo" per aiutare a informare la decisione.

In altre parole, ti consiglio di vedere se riesci a trovare la voce del cliente da veri clienti esterni o da altri dell'organizzazione o dai partner che possono eseguire un buon lavoro intermedio prima del lancio .

(allora quando ti dicono "REST! Non osare darci qualche mostruosità SOAP Rube Goldberg", puoi sorridere consapevolmente al tuo capo)

    
risposta data 28.09.2011 - 13:12
fonte
7

È un processo in due fasi:

  1. Convinci il tuo capo che dovrebbe essere il team tecnico a scegliere la direzione tecnica, non la gestione.

  2. Scegli REST. O SAPONE. O POX. O Qualunque.

Gli argomenti tecnici sono per persone tecniche, ovvero persone che faranno il lavoro. Una volta che il capo inizia a decidere la tecnologia, hai un problema sociale. Devi convincere il tuo capo a togliersi le mani dalla torta e lasciarti fare il tuo lavoro.

    
risposta data 08.08.2011 - 17:52
fonte
4

Proporrei un test: codice due soluzioni che fanno lo stesso servizio molto semplice. Usa SOAP e un'API REST-ful e confronta i risultati. Considerati gli strumenti oggi non ci dovrebbe essere molta differenza. Puoi alzare un servizio abbastanza facilmente.

Quindi modifica l'API. È mia esperienza che uno sviluppatore che modifica un'API REST può facilmente apportare le modifiche perché si sta occupando di un protocal concettuale che capiscono. È anche mia esperienza che l'API SOAP si baserà su strumenti per realizzare qualsiasi cosa. Puoi farlo a mano ma pochissime persone lo fanno (per ovvi motivi) una volta che vedi codice / markup generato.

Ancora meglio ... chiedi al tuo capo di implementare SOAP.

    
risposta data 08.08.2011 - 16:51
fonte
2

Dovresti esaminare i diversi ambienti, dove viene utilizzato il tuo sistema e se questi ambienti fanno comunicazione inter-sistema principalmente in modo riposante, che il tuo sistema dovrebbe offrire anche tale interfaccia. (Significa che, se i tuoi clienti lo usano, anche il tuo sistema dovrebbe farlo.)

    
risposta data 08.08.2011 - 15:18
fonte
1

Invece di entrare nel perpetuo boss contro gli argomenti del coder prendiamo alcuni casi specifici e valutiamo l'idoneità del modello. Gli amanti del REST sono i benvenuti a confutare con argomenti logici e basati sui fatti -

Scopo: Remoting dei servizi / superamento delle restrizioni / binding del firewall con protocolli come HTTP

Opzioni: SOAP / REST (scartando i protocolli come RMI ecc. perché è fuori dal contesto)

use case 1: ho bisogno di binding ottimizzato (JMS / RMI) per diversi motivi come   a) Propagazione del contesto delle transazioni   b) grande scambio di carico utile   c) QoS rigoroso Qui, la mia scelta sarà SAPONE. Ho visto qualcuno menzionato sui problemi di interoperabilità con tipi complessi - spiega perché pensi che la conformità al profilo di base di WS-I non possa risolvere il tuo problema (ad esempio preferibilmente).

use case 2: Ho bisogno di propagazione dell'identità (asserzione) in un ambiente federato di intermediari fidati (attivi o passivi). Questo è un caso d'uso B2B. Non credo di avere un modo definito di allegare criteri con un endpoint REST. Quindi il servizio basato su SOAP diventa la scelta più ovvia

use case 3: ho bisogno di un'API di gestione per il mio PaaS. JMX mbeans devono essere esposti come servizi. Questo è un po 'punto per punto in natura. La larghezza di banda è un vincolo. La governance non è una preoccupazione. Il client basato sul browser lo rende più utilizzabile. HTTPS è abbastanza buono in questo caso, non ho intenzione di preoccuparmi della sicurezza a livello di messaggio. Avrò una scelta su REST perché non ho bisogno delle sottigliezze e complessità di SOAP in questo caso particolare.

use-case 4: Ho bisogno di un supporto affidabile dei messaggi. WS-RM può risolvere per questo. SOAP è il modello ovvio qui perché il motore SOAP / app server ha il supporto OOTB per la configurazione WS-RM.

use case 5: Devo invocare più endpoint in un contesto TX e HTTP è l'unica opzione disponibile per il protocollo di trasporto. Non penso che REST supporti WS-AT, quindi vado con SOAP

use case 6: ho bisogno di un endpoint asincrono. Non voglio ritardare inutilmente il thread di richiesta. SOAP sarà la scelta.

use case 7: Voglio eliminare il sovraccarico non necessario dell'XML per convertire i tipi di dati, in quanto i dati verranno comunque visualizzati su un'interfaccia utente con una trasformazione minima o nulla. REST con JSON sarebbe la mia scelta.

In generale, se penso a DATA / RESOURCE preferirei REST Se penso a operazioni / metodi (sincronizzazione / asincronia .. stato..messaggio livello di sicurezza..scalabilità) sono propenso a usare SOAP

Non permettermi di introdurre la governance e l'angolo SOA qui. Io non voglio sembrare "one-of-those" in un forum dedicato agli sviluppatori.

Sentitevi liberi di correggermi in precedenza ..

    
risposta data 14.03.2013 - 06:48
fonte
0

Uno degli importanti vantaggi di REST che non è stato sollevato è che è intercambiabile e facilmente scalabile. SOAP non è collegabile, poiché è una richiesta POST .

    
risposta data 14.03.2013 - 12:22
fonte

Leggi altre domande sui tag