¿Cuál es el significado actual de SOAP?

44

La última vez que encontré un servicio basado en SOAP fue durante mi pasantía en una firma financiera en 2013. Ese fue el momento en que comencé mi carrera en TI. Recuerdo haber tenido algún material de estudio sobre SOAP en uno de mis cursos de ingeniería. Aparte de eso, no he usado SOAP durante mi carrera.

Estoy preguntando esto porque la pregunta de "Diferencia entre SOAP y REST" apareció en una de mis entrevistas recientes. De lo que sé (y de lo que encontré en Google) SOAP es un protocolo con un acoplamiento estrecho entre el cliente y el servidor para el intercambio de información que está estrechamente relacionado con la lógica empresarial. Mientras que REST es una arquitectura sin estado más flexible para la transferencia de datos.

¿Puede alguien corregirme si me equivoco con esta diferencia entre SOAP y REST? Además, ¿cuál es el significado actual de SOAP? ¿Las personas siguen desarrollando nuevas API basadas en SOAP, o es principalmente un legado ahora?

    
pregunta Abhas Tandon 22.11.2016 - 07:11

3 respuestas

57

REST es un estilo arquitectónico. SOAP es un protocolo de datos. La distinción es importante; no puedes compararlos directamente.

El propósito principal de REST es representar recursos en Internet, y proporciona mecanismos para descubrirlos. En contraste, SOAP se utiliza para comunicar datos estructurados entre computadoras, y eso es todo lo que hace .

Tenga en cuenta que en realidad no necesita REST para crear una relación cliente / servidor entre dos computadoras en Internet. Todo lo que necesita es un mecanismo que transfiera JSON o XML, y ni siquiera lo necesita si está dispuesto a ser incompatible con todos los demás.

Sin embargo, SOAP ha caído en desgracia para las nuevas API públicas, aunque todavía se usa comúnmente para aplicaciones B2B porque puede definir un "contrato de datos" con él. Los servicios web de JSON tienen la virtud de ser bastante ligeros y flexibles, y como Javascript reconoce JSON de forma nativa, es una opción natural para los navegadores.

Pero nada de eso tiene mucho que ver con REST, realmente.

Lecturas adicionales
¿REST es mejor que SOAP? (buen artículo, aunque llame incorrectamente a REST un protocolo).
El Modelo de Madurez de Richardson

    
respondido por el Robert Harvey 22.11.2016 - 07:26
26

REST es mucho más limitado que SOAP, que es su fuerza y la razón de su popularidad.

En SOAP, el conjunto de operaciones permitido y el conjunto de tipos de datos permitidos es esencialmente ilimitado. SOAP es un protocolo de procedimiento remoto, que se utiliza para exponer las API locales en toda la red sin perder fidelidad. Esto hizo que SOAP fuera popular en entornos empresariales donde los complejos sistemas transaccionales necesitaban interactuar a través de la red sin perder fidelidad en el camino. Esta riqueza en capacidad también es la caída de SOAP, ya que hace que la API de SOAP sea tan complicada de entender y de usar que requería herramientas automatizadas en forma de WSDL y bibliotecas de clientes SOAP para dar sentido a las cosas. Más aún, la exposición de toda la riqueza del sistema subyacente no es atractiva en las API públicas, donde desea proporcionar abstracciones que le permitan evolucionar el sistema subyacente sin tener que interrumpir o versionar su API.

REST + JSON ganó popularidad específicamente debido a su simplicidad. Define un conjunto limitado de operaciones con un conjunto limitado de tipos de datos, lo que requiere que el diseñador de API diseñe cuidadosamente las abstracciones que se ajusten a este vocabulario limitado y realmente piense en la asignación del dominio empresarial a los recursos REST. Una API REST es fácil de entender y fácil de usar sin herramientas especiales. Para una API pública donde los usuarios de su API pueden tener todos los niveles de habilidad y conocimiento, esto es exactamente lo que quiere, por lo que todas las API que ve en la web han estado haciendo la transición a REST. SOAP está relegado a situaciones empresariales donde aún existe el deseo y la necesidad de compartir API complejas entre sistemas. Sin embargo, con las tendencias arquitectónicas hacia microservicios de versión independiente desarrollados por equipos separados, incluso ese dominio está perdiendo terreno.

Esencialmente, lo que la gente se ha dado cuenta es que el conjunto de restricciones que debe aplicar a su diseño de API para hacer que la API sea lo suficientemente simple y abstracta como para que sea mantenible y fácil de usar es exactamente el conjunto de restricciones que introduce REST, que neutraliza efectivamente los beneficios de SOAP, lo que le deja solo sus inconvenientes. Podría crear una API simplificada con SOAP, pero nunca sería tan fácil de usar como REST, por lo que en la práctica todo el mundo solo elige REST.

    
respondido por el Joeri Sebrechts 22.11.2016 - 10:28
5

No puedes comparar REST y SOAP. REST es un estilo arquitectónico mientras que SOAP es un protocolo.

Desafortunadamente, REST se convirtió en coloquial hablado de un sinónimo para el servicio HTTP RESTful, lo que significa una realización de la arquitectura de estilo REST con HTTP como protocolo (de aplicación).

REST se basa en los siguientes principios (restricciones y elementos) (entre paréntesis, la realización en RESTful HTTP) [1] .

  • Sin estado (HTTP es un protocolo sin estado)
  • Recurso (identificado por URI)
  • Interfaz uniforme (métodos HTTP)
  • Representación (MIME-TYPE)
  • HATEOS (Hipervínculos)
  • Caché (HTTP Cache)

En el otro lado, mucha gente quiere decir SOAP un servicio web basado en WSDL y SOAP que forman parte de la arquitectura del servicio web W3C [2] .

  • SOAP se utiliza como protocolo para intercambiar información (básicamente, nombre del método, parámetros, valores de retorno, tipos de datos, ...).
  • WSDL es un lenguaje de definición de interfaz para describir el servicio web.
  

¿Cuál es el significado actual de SOAP *?

SOAP es un estándar de W3C y se usa como formato de intercambio de información en los servicios web de W3C. Esos servicios web fueron, especialmente durante la exageración de SOA (arquitecturas orientadas a servicios) alrededor de 2008 (+ - 3 años), y (desafortunadamente) aún se implementan principalmente en aplicaciones empresariales.

Esto tiene varias razones. En aquel entonces, RESTful HTTP no era muy conocido y se entendía mal. Desafortunadamente, todavía se malinterpreta, eche un vistazo a las otras respuestas

  

„[...] REST es mucho más limitado que SOAP [...]."

     

„El propósito principal de REST es representar los recursos en Internet [...].“

Además, SOAP (y WSDL) son parte de la pila de protocolos del servicio web de W3C que proporciona aún más estándares para implementar un servicio web.

  

¿Las personas siguen desarrollando nuevas API basadas en SOAP, o es principalmente una   legado ahora?

Así que sí, todavía hay y habrá también en futuros sistemas que usen SOAP (al menos en sistemas empresariales, principalmente detrás de las puertas). Pero la mayoría está tratando de hacer algún tipo de "REST" en la actualidad.

  

¿Puede alguien corregirme si me equivoco con esta diferencia?   entre SOAP y REST?

Decir que REST es una arquitectura sin estado más flexible para la transferencia de datos no es una buena explicación. El REST de habla simple es un estilo de arquitectura con restricciones y elementos específicos. Mientras que SOAP es un protocolo de intercambio de información.

Como ya escribí no puedes compararlos. Pero puede comparar un servicio web HTTP RESTful con un servicio web SOAP / WSDL.

    
respondido por el Paul Wasilewski 23.11.2016 - 00:40

Lea otras preguntas en las etiquetas