¿Comparar y contrastar servicios web REST y SOAP? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

Actualmente me doy cuenta de que lo similar es usar el protocolo de Internet (HTTP) para intercambiar datos entre el consumidor y el proveedor.

La diferencia es:

  1. SOAP es un mensaje basado en XML protocolo, mientras que el RESTO es un estilo arquitectónico
  2. SOAP utiliza WSDL para la comunicación entre el consumidor y el proveedor, mientras que REST solo utiliza 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 el resultado legible por humanos, mientras que el resultado REST es legible con es simplemente XML o JSON
  5. SOAP no es solo sobre HTTP, también utiliza otros protocolos como SMTP, FTP, etc, REST es solo sobre HTTP

Eso es todo lo que conozco como las diferencias entre ellos. Podría alguien corregirme y añadir más.

Author: Nawaz, 2012-06-11

3 answers

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

WSDL define el contrato entre cliente y servicio y es estático por su naturaleza. En el caso del contrato REST es algo complicado y está definido por HTTP, URI, Formatos de Medios y Protocolo de Coordinación Específico de la Aplicación. Es muy dinámico a diferencia de WSDL.

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

Esto no es cierto. XML plano 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 codificación, etc.)...) que está en contra de REST en la medida en que los mensajes deben ser autónomos y coordinar la interacción entre el agente / cliente y el servicio.

Con enlaces + relaciones de enlaces semánticos los clientes deben ser capaces de determinar cuál es el siguiente paso de interacción y seguir estos enlaces y continuar comunicación con el servicio.

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

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

El RESTO es solo HTTP

No es cierto que 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 también se puede lograr con otros protocolos.

P.d. Muy simple, pero muy interesante explicación del DESCANSO: http://www.looah.com/source/view/2284

 54
Author: ioseb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-24 14:35:07

En el día a día, en términos prácticos de programación, la mayor diferencia está en el hecho de que con SOAP está trabajando con formatos de intercambio de datos estáticos y fuertemente definidos donde, al igual que con REST y JSON, el formato de intercambio de datos es muy suelto 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.

JSON los datos normalmente no se pasan de acuerdo con un formato fuertemente definido (a menos que esté utilizando un marco que lo soporte).. por ejemplo, http://msdn.microsoft.com/en-us/library/jj870778.aspx o implementando json-schema).

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 restringirlo por contratos de datos (Si JSON RESTful web services usa contrato de datos)

La gente solía trabajar en los lenguajes dinámicos con tipos sueltos tienden a sentirse más cómodos con la holgura de JSON, mientras que los desarrolladores de lenguajes con tipos fuertes prefieren XML.

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

 4
Author: Michael Mügge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:15

SOAP trae su propio protocolo y se centra en exponer partes de la lógica de la aplicación (no datos) como servicios. SOAP expone las operaciones. SOAP se centra en el acceso a operaciones con nombre, cada una implementa cierta lógica de negocio a través de diferentes interfaces.

Aunque SOAP se conoce comúnmente como "servicios web", este es un nombre inapropiado. El JABÓN 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 rest ya que está accediendo a un recurso (datos).

switchCategory(User, OldCategory, NewCategory)

REST permite muchos formatos de datos diferentes donde as SOAP solo permite XML. Si bien esto puede parecer que agrega complejidad al resto porque necesita manejar múltiples formatos, en mi experiencia, en realidad ha sido bastante beneficioso. Por lo general, JSON es una mejor opción para los datos y analiza mucho más rápido. REST permite un mejor soporte para los clientes del navegador debido a que es soporte para JSON.

 0
Author: Shiven,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-11 07:20:49