2009-09-18 41 views
55

Qual è la differenza tra REST e WebService (SOAP), ho guardato l'API di facebook, usano le intestazioni HTTP e alcuni parametri (probabilmente xml o non) e restituiscono il risultato in xml, dove altrimenti SOAP fa esattamente stesso, intestazioni HTTP + parametri xml e restituisce intestazioni + xml.Differenza tra REST e WebServices

REST richiede anche un token autenticato in cui altrimenti SOAP utilizza la sessione http che è esattamente lo stesso token utilizzato per l'autenticazione e altre informazioni. Tutto quello che posso vedere è che SOAP è una versione poco avanzata di REST?

Oppure ci sono altre considerazioni sulle prestazioni? La lettura di REST parla solo di un livello molto alto di comunicazione con i client server, ma anche SOAP fa esattamente lo stesso. Qualcuno può indicarmi dove può definire il corretto numero di REST e SOAP.

Usiamo molto SOAP in modo trasparente in .net, tuttavia voglio solo sapere che vale veramente la pena di prestare attenzione a REST dove attualmente tutto è in esecuzione straordinariamente scorrevole.

So che REST è un'architettura e SOAP è un protocollo ma la mia domanda è nel dettaglio che attualmente l'implementazione ASP.NET WebService di SOAP ha un'architettura REST?

+0

Ci sono potenziali duplicati di questo - REST vs SOAP sembra essere una domanda comune (tramite @John Saunders, buon punto ma rollback perché il commento è stato fatto in una modifica). Mentre l'argomento è duplicato, penso che questa domanda verrà posta nelle ricerche in cui gli altri non lo faranno, quindi la domanda dovrebbe rimanere aperta. – Keith

risposta

67

SOAP è un protocollo per l'invio/ricezione di dati su HTTP come XML.

Un tipico servizio Web sarà costituito da alcuni metodi un WSDL che descrive come chiamarlo. Non esiste una vera convenzione per come dovrebbero essere strutturati, quindi hai sempre bisogno di molta documentazione API.

In genere questo sarà qualcosa di simile (per ASP.NET):

  • HTTP POST a mysite.com/products.asmx/ListAllProducts - torna elenco XML dei prodotti
  • HTTP POST-mysite.com/products.asmx/GetProduct - restituisce XML per prodotto basato su XML SOAP nel contenuto pubblicato
  • HTTP POST a mysite.com/products.asmx/UpdatePr oduct - modifiche di prodotto basata su XML SOAP nel contenuto pubblicato

REST è più di una convenzione per la strutturazione di tutti i metodi:

  • HTTP GET da mysite.com/products - rendimenti XML o JSON messa in vendita di tutti i prodotti
  • HTTP GET da mysite.com/products/14 - restituisce XML o JSON per il prodotto 14
  • HTTP POST a mysite.com/products/14 - modifica il prodotto 14 a ciò che pubblichi nel modulo HTML.
  • HTTP DELETE-mysite.com/products/14 - rimuove prodotto 14
  • HTTP PUT-mysite.com/prodotti - aggiunge un nuovo prodotto

Così REST funziona più come ci si aspetterebbe URL del browser a. In questo modo è più naturale e una convenzione è molto più facile da capire. Tutte le API REST funzionano in modo simile, quindi non si spende quanto a lungo le peculiarità di ciascun sistema.

+0

Ok così REST fa tutto puramente su HTTP, dove altro servizio Web fa solo su SOAP, su Web Service hai bisogno di strumenti aggiuntivi per SOAP Marshelling giusto? Grazie. –

+6

Informazioni su DELETE e PUT, poiché REST è principalmente per le macchine che parlano tra loro, non avere accesso a quei verbi da un browser non è forse così importante. Penso che sia piuttosto importante indicare il focus sui verbi per REST, mentre SOAP inserisce i comandi effettivi nella richiesta, invece del tipo di richiesta. – ShiDoiSi

+1

@vs - buon punto. @Akash Kava - non del tutto, dato che SOAP è anche su HTTP. Puoi chiamare entrambi i meccanismi in Javascript da una semplice pagina web. La cosa importante di REST è l'uso della convenzione dei verbi HTTP (GET, POST, ecc.) Piuttosto che chiamare i nomi dei metodi letti dal WSDL – Keith

13

Per me un servizio implementato utilizzando un approccio RESTful vince su uno che utilizza SOAP o RPC in termini di accessibilità. In un sistema relativamente chiuso in cui gli strumenti sono disponibili per generare stub e legami basati su un WSDL, questo non è molto importante. Tuttavia, se si desidera creare servizi accessibili e disponibili per una vasta gamma di client, l'uniformità dei servizi REST e la facilità con cui possono essere consumati è un grande vantaggio, ovvero non è necessario un grosso stack RPC, solo la capacità di fare richieste HTTP.

Non sono sicuro che questo risponda totalmente alla tua domanda, ma se, come dici tu, hai un sistema che funziona basato su SOAP (e controlli il client e il server), allora non vedo alcun motivo per cambiare. Inoltre, alcuni servizi si presteranno naturalmente a un accesso basato su RPC, nel qual caso un'interfaccia SOAP sarà più appropriata.

In termini di prestazioni, uno o più livelli verrebbero effettivamente rimossi dagli stack di tecnologia client e server se non si utilizza SOAP, quindi a parità di condizioni, un servizio che espone un'interfaccia RESTful vincerà lì.

+0

+1 Buon punto, grazie. –