Dentro de las actividades diarias de much@s profesionistas dedicados al desarrollo de software, así como ingenier@s de pruebas de software (especialmente hablando de las pruebas de software), se encuentran las validaciones en base a programas «SOAP». Pero, alguna vez te has detenido a preguntarte: ¿qué es SOAP? y ¿Por qué es tan importante el realizar pruebas con estas herramientas?
SOAP significa Protocolo de Acceso de Objetos Simples (del inglés: Simple Object Access Protocol) y es un protocolo de mensajes que permite a programas que funcionan en diferentes sistemas operativos (tales como Windows y Linux) comunicarse usando HTTP y XML.
Ya que los protocolos web se encuentran instalados y disponibles para ser utilizados por los principales sistemas operativos, HTTP y XML proveen una rápida solución que permite a los programas que se encuentran siendo ejecutados en diferentes sistemas operativos en una red comunicarse entre ellos. SOAP especifica exactamente el cómo codificar un encabezado de HTTP y un archivo XML para que un programa en la computadora «A» pueda llamar a un programa en la computadora «B» y darle información. SOAP también especifica el cómo el programa llamado (en la computadora «B») puede regresar una respuesta. A pesar de ser relacionado frecuentemente con HTTP, SOAP soporta otros protocolos de transporte (comunicación) también.
SOAP define el formato de los mensajes basados en XML que las aplicaciones habilitadas para servicios web usan para comunicarse e inter-operar entre sí a través de Internet. El entorno heterogéneo de la Web exige que las aplicaciones soporten un protocolo de codificación de datos y un formato de mensajes común. SOAP es un estándar para la codificación de mensajes en XML que llaman funciones encontradas en otras aplicaciones.
SOAP es análoga a las llamadas de procedimiento remoto (RPC), que se utiliza en muchas tecnologías, como DCOM y CORBA, pero elimina algunas de las complejidades de la utilización de estas interfaces. SOAP permite a las aplicaciones el llamar las funciones de otras aplicaciones, que se ejecuten en cualquier plataforma de hardware, sin tener en cuenta diferentes sistemas operativos o lenguajes de programación.
La comunicación y llamadas realizadas a travéz de SOAP son muy propensas a pasar más allá de los servidores de Firewalls, ya que típicamente HTTP utiliza el puerto 80, cuando otro tipo de llamadas pueden ser bloqueadas por razones de seguridad. Los programas que utilizan SOAP para comunicarse pueden estar seguros de qué podrán comunicarse con programas en cualquier lugar.
Algunas de las ventajas de aprovechar de SOAP incluyen:
- Es independiente de plataforma y lenguaje.
- SOAP proporciona comunicaciones simplificadas a través de servidores proxy y cortafuegos (firewalls), como se mencionó anteriormente.
- Dispone de la capacidad de aprovechar diferentes protocolos de transporte, incluyendo HTTP y SMTP, así como otros.
Algunas desventajas de aprovechamiento de SOAP incluyen:
- SOAP es normalmente mucho más lento que otros tipos de estándares de middleware, incluyendo CORBA. Esto debido al hecho de que SOAP utiliza un formato XML detallado. Es necesario comprender totalmente las limitaciones de rendimiento antes de la creación de aplicaciones alrededor de SOAP.
- SOAP se limita normalmente a la puesta en común, y no las notificaciones de eventos, cuando el aprovechamiento de HTTP para el transporte. Lo que es más, un solo cliente puede utilizar los servicios de un servidor en situaciones típicas.
- Una vez más, cuando el aprovechamiento de HTTP como protocolo de transporte, tiende a haber una latencia cortafuegos debido al hecho de que el servidor de seguridad está analizando el transporte HTTP. Esto se debe al hecho de que HTTP también se aprovecha para navegar por Internet, y muchos servidores de seguridad no entiende la diferencia entre el uso de HTTP dentro de un navegador Web y el uso de HTTP dentro de SOAP.
- SOAP tiene diferentes niveles de apoyo, dependiendo del lenguaje de programación soportado. Por ejemplo, el apoyo de SOAP dentro de Python y PHP no es tan fuerte como lo es dentro de Java y .NET.
