SOAP (Simple Object Access Protocol)
Definición
SOAP es un protocolo de mensajería basado en XML que permite la comunicación estructurada entre aplicaciones distribuidas en red. Fue desarrollado inicialmente por Microsoft y adoptado por la W3C como estándar. Se usa sobre todo en servicios web que requieren seguridad y confiabilidad.
Características principales
- Basado en XML para estructurar mensajes.
- Usa principalmente HTTP/HTTPS como transporte (también SMTP, JMS, etc.).
- Extensible mediante cabeceras personalizadas.
- Estándar formal que asegura interoperabilidad.
- Compatible con especificaciones WS-* (WS-Security, WS-ReliableMessaging, etc.).
Estructura de un mensaje SOAP
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> </soap:Header> <soap:Body> <m:GetUserRequest xmlns:m="http://example.com/users"> <m:UserId>123</m:UserId> </m:GetUserRequest> </soap:Body> <soap:Fault> </soap:Fault> </soap:Envelope>
Ejemplo de uso
Petición (request)
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <GetUserRequest xmlns="http://example.com/usuarios"> <UserId>1</UserId> </GetUserRequest> </soap:Body> </soap:Envelope>
Respuesta (response)
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <GetUserResponse xmlns="http://example.com/usuarios"> <User> <Id>1</Id> <Nombre>Emilio</Nombre> <Email>emilio@example.com</Email> </User> </GetUserResponse> </soap:Body> </soap:Envelope>
Ventajas de SOAP
- Altamente estandarizado e interoperable.
- Seguridad integrada mediante WS-Security.
- Manejo robusto de errores con Fault.
- Soporte para múltiples protocolos de transporte.
- Ideal para entornos empresariales críticos.
Desventajas de SOAP
- Más complejo y pesado que REST.
- Uso de XML hace que sea más verboso.
- Curva de aprendizaje mayor.
- Menos flexible y requiere contratos WSDL estrictos.
SOAP vs REST
Aspecto | SOAP | REST |
---|---|---|
Naturaleza | Protocolo | Estilo arquitectónico |
Formato | XML | JSON, XML, YAML, etc. |
Transportes | HTTP, SMTP, JMS, etc. | Solo HTTP |
Complejidad | Alta, con contratos WSDL | Baja, simple |
Seguridad | WS-Security integrado | Depende de HTTPS, JWT, OAuth |
Uso típico | Banca, seguros, sistemas críticos | APIs públicas, web y móviles |