¿Comparar y contrastar los servicios web REST y SOAP?

Actualmente descubro que lo similar es utilizar el protocolo de Internet (HTTP) para intercambiar datos entre el consumidor y el proveedor.

La diferencia es:

  1. SOAP es un protocolo de mensajes basado en XML, mientras que REST es un estilo arquitectónico
  2. SOAP utiliza WSDL para la comunicación entre el consumidor y el proveedor, mientras que REST solo usa XML o JSON para enviar y recibir datos
  3. SOAP invoca servicios llamando al método RPC, REST simplemente llama a los servicios a través de la ruta URL
  4. SOAP no devuelve resultados legibles por humanos, mientras que el REST es legible con XML o JSON
  5. SOAP no se limita a HTTP, también utiliza otros protocolos como SMTP, FTP, etc., REST solo supera HTTP

Eso es todo lo que sé como las diferencias entre ellos. ¿Alguien podría corregirme y agregar más?

SOAP utiliza WSDL para la comunicación por consumidor y proveedor, mientras que REST solo usa XML o JSON para enviar y recibir datos

WSDL define el contrato entre el cliente y el servicio y es estático por naturaleza. En el caso de un contrato REST, es algo complicado y está definido por HTTP, URI, Formatos de medios y Protocolo de coordinación específica de la aplicación. Es altamente dynamic a diferencia de WSDL.

SOAP no devuelve resultados legibles por humanos, mientras que el REST es legible con XML o JSON

Esto no es verdad. Simple XML o JSON no son RESTful en absoluto. Ninguno de ellos define ningún control (es decir, enlaces y relaciones de enlaces, información de métodos, información de encoding, etc.) que está en contra de REST en cuanto a que los mensajes deben ser autónomos y coordinar la interacción entre el agente / cliente y el servicio.

Con vínculos + relaciones de enlaces semánticos, los clientes deben poder determinar cuál es el siguiente paso de interacción, seguir estos enlaces y continuar la comunicación con el servicio.

No es necesario que los mensajes sean legibles por humanos, es posible usar un formato críptico y crear aplicaciones REST perfectamente válidas. No importa si el mensaje es legible o no.

Por lo tanto, plain XML (application / xml) o JSON (application / json) no son formatos suficientes para construir aplicaciones REST. Siempre es razonable usar un subconjunto de estos tipos de medios generics que tienen un fuerte significado semántico y ofrecen suficiente información de control (enlaces, etc.) para coordinar las interacciones entre el cliente y el servidor.

REST solo termina en HTTP

No es cierto, HTTP es el más utilizado y cuando hablamos de servicios web REST solo asumimos HTTP. HTTP define la interfaz con sus métodos (GET, POST, PUT, DELETE, PATCH, etc.) y varios encabezados que se pueden usar de manera uniforme para interactuar con los recursos. Esta uniformidad se puede lograr con otros protocolos también.

PD: explicación muy simple pero muy interesante de REST: http://www.looah.com/source/view/2284

En el día a día, los términos de progtwigción práctica, la mayor diferencia radica en que con SOAP está trabajando con formatos de intercambio de datos estáticos y fuertemente definidos, en comparación con el formato de intercambio de datos REST y JSON es muy flexible en comparación. Por ejemplo, con SOAP puede validar que los datos intercambiados coincidan con un esquema XSD. Por lo tanto, el XSD sirve como un “contrato” sobre cómo el cliente y el servidor deben entender cómo deben estructurarse los datos que se intercambian.

Por lo general, los datos JSON no se pasan de acuerdo con un formato fuertemente definido (a menos que esté usando un marco que lo soporte … ej. http://msdn.microsoft.com/en-us/library/jj870778.aspx o implementando json- esquema).

De hecho, algunos (muchos / la mayoría) argumentarían que la salsa secreta “dinámica” de JSON va en contra de la filosofía / cultura de restringirla mediante contratos de datos (si los servicios web RESTful de JSON usan contrato de datos )

Las personas acostumbradas a trabajar en lenguajes dynamics con tipeo flexible tienden a sentirse más cómodos con la soltura de JSON, mientras que los desarrolladores de lenguajes fuertemente tipados prefieren XML.

http://www.mnot.net/blog/2012/04/13/json_or_xml_just_decide

SOAP trae su propio protocolo y se enfoca en exponer piezas de lógica de aplicaciones (no datos) como servicios. SOAP expone las operaciones. SOAP se centra en el acceso a operaciones con nombre, cada una implementa una lógica comercial a través de diferentes interfaces.

Aunque SOAP se conoce comúnmente como “servicios web”, este es un nombre inapropiado. SOAP tiene muy poco o nada que ver con la Web. REST proporciona verdaderos “servicios web” basados ​​en URI y HTTP.

A modo de ilustración, aquí hay algunas llamadas y su hogar apropiado con comentarios.

getUser(User); 

Esta es una operación de descanso ya que está accediendo a un recurso (datos).

 switchCategory(User, OldCategory, NewCategory) 

REST permite muchos formatos de datos diferentes, ya que SOAP solo permite XML. Si bien esto puede parecer que agrega complejidad a REST porque necesita manejar múltiples formatos, en mi experiencia, en realidad, ha sido bastante beneficioso. JSON generalmente se adapta mejor a los datos y analiza mucho más rápido. REST permite una mejor compatibilidad con los clientes del navegador debido a su compatibilidad con JSON.