La última vez que encontré un servicio basado en SOAP fue durante mi pasantía en una empresa financiera en 2013. Ese fue el momento en que comencé mi carrera en TI. Recuerdo haber tenido material de estudio sobre SOAP en uno de mis cursos de ingeniería. Fuera de eso, no he usado mucho SOAP durante mi carrera.
Estoy preguntando esto ya que la pregunta "Diferencia entre SOAP y REST" apareció en una de mis entrevistas recientes. Por lo que sé (y 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 estoy equivocado acerca de esta diferencia entre SOAP y REST? Además, ¿cuál es el significado actual de SOAP? ¿La gente todavía está desarrollando nuevas API basadas en SOAP, o ahora es principalmente un legado?
fuente
Respuestas:
REST es de hecho 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 los recursos en Internet y proporcionar mecanismos para descubrirlos. En contraste, SOAP se usa para comunicar datos estructurados entre computadoras, y eso es todo lo que realmente 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 JSON tienen la virtud de ser bastante ligeros y flexibles, y dado que Javascript reconoce a 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, a pesar de que incorrectamente llama REST un protocolo).
El modelo de madurez de Richardson
fuente
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 permitidas 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 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 la capacidad también es la caída de SOAP, porque hace que las API de SOAP sean tan engorrosas de entender y usar que necesitaban herramientas automatizadas en forma de bibliotecas de cliente WSDL y SOAP para dar sentido a las cosas. Más aún, exponer toda la riqueza del sistema subyacente no es atractivo en las API públicas, donde desea proporcionar abstracciones que le permitan evolucionar el sistema subyacente sin tener que romper 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 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 ninguna herramienta especial. Para una API pública donde sus usuarios de API pueden tener todos los niveles de habilidad y conocimiento, esto es exactamente lo que desea, por lo que todas las API que ve en la web han pasado a REST. SOAP se relega a situaciones empresariales en las que todavía existe el deseo y la necesidad de compartir API complejas entre sistemas. Sin embargo,
Esencialmente, lo que la gente se ha dado cuenta es que el conjunto de restricciones que debe aplicar al diseño de su API para hacer que la API sea lo suficientemente simple y abstracta para que sea mantenible y fácil de usar es exactamente el conjunto de restricciones que introduce REST, que neutraliza efectivamente los SOAP beneficios dejándote solo con sus desventajas. 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 todos eligen REST.
fuente
No puede comparar REST y SOAP. REST es un estilo arquitectónico, mientras que SOAP es un protocolo.
Desafortunadamente, REST se convirtió coloquialmente en sinónimo de servicio HTTP RESTful, lo que significa una realización de 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] .
Por otro lado, mucha gente quiere decir que SOAP es un servicio web basado en WSDL y SOAP que forman parte de la arquitectura del servicio web W3C [2] .
SOAP es un estándar del W3C y se utiliza como formato de intercambio de información en los servicios web del W3C. Esos servicios web fueron, especialmente durante la exageración de las SOA (arquitecturas orientadas a servicios) alrededor de 2008 (+ - 3 años) y (desafortunadamente) todavía se implementan principalmente en aplicaciones empresariales.
Esto tiene varias razones. En aquel entonces, RESTful HTTP no era bien conocido y se entendía mal. Desafortunadamente, todavía no se comprende bien. Mira las otras respuestas.
Además, SOAP (y WSDL) son parte de la pila de protocolos del servicio web W3C que proporciona aún más estándares para implementar un servicio web.
Entonces sí, todavía hay y habrá también en futuros sistemas que estén utilizando SOAP (al menos en sistemas empresariales, principalmente detrás de las puertas). Pero la mayoría está tratando de hacer algún tipo de "DESCANSO" hoy en día.
Decir que REST es una arquitectura sin estado más flexible para la transferencia de datos no es una buena explicación. REST, simplemente hablado, 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 RESTful HTTP con un servicio web SOAP / WSDL.
fuente