Los ficheros WSDL (Web Services Description Language) son una pieza clave en la arquitectura de los servicios web, particularmente en aquellos que utilizan el protocolo SOAP (Simple Object Access Protocol). El objetivo principal de estos ficheros es describir, de manera estructurada y detallada, cómo se puede interactuar con un servicio web. En este artículo, explicaremos en profundidad cómo funcionan los ficheros WSDL y su relación con los servicios SOAP.
El WSDL es un lenguaje basado en XML que permite describir de forma detallada los servicios web. A través de este fichero, los clientes potenciales pueden conocer:
Este fichero actúa como un contrato entre el proveedor del servicio y los consumidores, indicando explícitamente cómo deben formularse las peticiones para que el servicio responda correctamente.
SOAP es un protocolo que permite el intercambio de información estructurada entre diferentes aplicaciones, generalmente sobre el protocolo HTTP. A pesar de que SOAP puede funcionar sin WSDL, este último añade una capa de descripción que facilita el uso de los servicios web al estandarizar la forma en que se debe interactuar con ellos.
Un fichero WSDL describe las interacciones posibles con un servicio SOAP, permitiendo a los desarrolladores generar automáticamente el código necesario para hacer las peticiones y procesar las respuestas, sin tener que preocuparse por los detalles internos del servicio. Así, el WSDL reduce errores y simplifica la integración de servicios en diferentes plataformas.
Un fichero WSDL está compuesto por diferentes elementos que definen con precisión cómo interactuar con un servicio. Los principales componentes son:
El elemento <types>
define los tipos de datos que serán usados en las comunicaciones. Como está basado en XML, utiliza el estándar XML Schema para describir los tipos de datos complejos que se utilizarán en las peticiones y respuestas del servicio.
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="GetTemperatureRequest" type="string"/>
<element name="GetTemperatureResponse" type="float"/>
</schema>
</types>
El elemento <message>
describe los mensajes intercambiados entre el cliente y el servicio. Cada mensaje puede contener una o más partes, que son esencialmente parámetros de entrada o salida.
<message name="GetTemperatureInput">
<part name="city" type="string"/>
</message>
<message name="GetTemperatureOutput">
<part name="temperature" type="float"/>
</message>
El elemento <portType>
define un conjunto de operaciones soportadas por el servicio. Cada operación corresponde a un método que el cliente puede invocar.
<portType name="WeatherService">
<operation name="GetTemperature">
<input message="tns:GetTemperatureInput"/>
<output message="tns:GetTemperatureOutput"/>
</operation>
</portType>
El elemento <binding>
especifica cómo debe estructurarse el mensaje SOAP para cada operación definida en el portType
. Aquí se detallan los aspectos técnicos como el estilo de codificación (RPC o Document) y el formato de los mensajes.
<binding name="WeatherServiceSoapBinding" type="tns:WeatherService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetTemperature">
<soap:operation soapAction="urn:GetTemperature"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
Finalmente, el elemento <service>
proporciona la información necesaria para acceder al servicio. Define el endpoint, que es la URL donde se encuentra el servicio, y enlaza el binding a este endpoint.
<service name="WeatherService">
<port name="WeatherServicePort" binding="tns:WeatherServiceSoapBinding">
<soap:address location="http://example.com/weatherservice"/>
</port>
</service>
El funcionamiento de los ficheros WSDL dentro de un servicio web SOAP se puede resumir en los siguientes pasos:
1. Publicación del WSDL: El proveedor del servicio web genera un fichero WSDL que describe todas las operaciones disponibles y cómo interactuar con ellas. Este fichero es accesible generalmente a través de una URL pública.
2. Consumo del WSDL por parte del cliente: El cliente, que quiere utilizar el servicio, descarga el fichero WSDL. A partir de la descripción que contiene, puede generar automáticamente el código necesario para invocar las operaciones del servicio (normalmente con herramientas proporcionadas por entornos de desarrollo como .NET, Java, o PHP).
3. Generación de solicitudes SOAP: Usando la información del WSDL, el cliente envía una solicitud SOAP bien estructurada al servidor. Dado que el WSDL define los tipos de datos y la estructura de las operaciones, el cliente sabe exactamente qué incluir en la solicitud.
4. Recepción y procesamiento: El servidor recibe la solicitud SOAP, la procesa y genera una respuesta, también en formato SOAP, que cumple con la estructura definida en el WSDL.
5. Devolución de la respuesta: El cliente recibe la respuesta SOAP, que puede procesar de acuerdo con la estructura previamente definida en el WSDL.
El uso de WSDL en servicios SOAP ofrece varios beneficios tanto para los proveedores como para los consumidores del servicio:
Los ficheros WSDL son una parte esencial de la arquitectura de los servicios web basados en SOAP, ya que actúan como una guía detallada que describe cómo interactuar con el servicio. Gracias a su estructura basada en XML y su capacidad para describir tanto las operaciones como los tipos de datos y protocolos involucrados, el WSDL facilita la interoperabilidad y automatización en el desarrollo de servicios web. En combinación con SOAP, ofrece una solución robusta y estándar para la comunicación entre aplicaciones distribuidas en diferentes plataformas.
Jorge García
Fullstack developer