Tutorial de WSDL, el lenguaje de descripción de servicios web
En el ámbito de los servicios web, hay varias tecnologías que desempeñan un papel muy importante. Además de SOAP y REST, nos referimos sobre todo al lenguaje descriptivo WSDL, que describe las funciones de un servicio web para que el resto de participantes de la red puedan utilizarlo. Te contamos cómo funciona, para qué sirve exactamente el archivo WSDL y de qué forma se relaciona esta notación con otros lenguajes.
¿Qué significa WSDL?
WSDL son las siglas de web service description language o lenguaje de descripción de servicios web. Se trata de un metalenguaje que permite describir los servicios web de manera integral. Un servicio web es, a su vez, un servicio que un servidor proporciona a los clientes a través de Internet (u otra red). Este proceso se lleva a cabo al margen de la plataforma, esto es, entre los sistemas y aplicaciones más diversos. Para que el cliente pueda conocer los procedimientos y posibilidades del servicio web, un archivo WSDL en el servidor web contiene la información que indica al cliente cómo llamar al servicio web.
WSDL se basa en el lenguaje XML (extensible markup language) o lenguaje de marcado extensible, así como en el lenguaje XML Schema (XSD). En otras palabras, WSDL utiliza elementos XML.
WSDL está estandarizado por el Consorcio World Wide Web (W3C).
Estructura y propiedades del WSDL
WSDL emplea descripciones abstractas y concretas para definir los servicios web. Mientras que las descripciones abstractas se refieren a la funcionalidad del servicio, las descripciones concretas comunican datos específicos, como el protocolo de transmisión. El documento (es decir, el archivo WSDL) tiene una estructura jerárquica. Por lo tanto, la información está anidada.
WSDL recurre a seis elementos principales de XML:
- types: tipos de datos
- message: descripción de los datos a transferir
- interface: operaciones abstractas que describen la comunicación entre el servidor y el cliente (aún se llamaba portType en una versión anterior del estándar)
- binding: información sobre el protocolo de transporte utilizado
- endpoint: información sobre la interfaz de comunicación, generalmente en forma de un URI (aún se denominaba port en una versión anterior del estándar)
- service: puntos de acceso del servicio web
Si el archivo incluye todos estos elementos, el cliente obtiene toda la información necesaria para acceder al servicio web. El que todos los sistemas obtengan el mismo lenguaje por medio del archivo WSDL es lo que hace que los servicios web sean multiplataforma.
Ejemplo de archivo WSLD
A continuación, te mostramos la estructura de un archivo WSDL con más detalle en un documento de muestra. El siguiente código es para un servicio web que produce un clásico “Hello World”.
<?xml version="1.0"?>
<definitions name="HelloWorld"
targetNamespace="http://example.com/helloworld.wsdl"
xmlns:tns="http://example.com/helloworld.wsdl"
xmlns:xsd1="http://example.com/helloworld.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace="http://example.com/helloworld.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="HelloWordElement">
<complexType>
<all>
<element name="worldRequest" type="string"/>
</all>
</complexType>
</element>
</schema>
</types>
<message name = "HelloWorldRequest">
<part name = "name" type = "xsd:string"/>
</message>
<message name = "HelloWorldResponse">
<part name = "greeting" type = "xsd:string"/>
</message>
<interface name = "HelloWorld_Interface">
<operation name = "sayHelloWorld">
<input message = "tns:HelloWorldRequest"/>
<output message = "tns:HelloWorldResponse"/>
</operation>
</interface>
<binding name = "HelloWorld_Binding" type = "tns:HelloWorld_Interface">
<soap:binding style = "rpc"
transport = "http://schemas.xmlsoap.org/soap/http"/>
<operation name = "sayHelloWorld">
<soap:operation soapAction = "sayHelloWorld"/>
<input>
<soap:body
encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"
namespace = "urn:examples:helloworld"
use = "encoded"/>
</input>
<output>
<soap:body
encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"
namespace = "urn:examples:helloworld"
use = "encoded"/>
</output>
</operation>
</binding>
<service name = "Hello_World">
<documentation>WSDL File for HelloWorld</documentation>
<endpoint binding = "tns:HelloWorld_Binding" name = "HelloWorld_Endpoint">
<soap:address
location = "http://www.example.com/HelloWorld/" />
</endpoint>
</service>
</definitions>
En este ejemplo de código fuente, se aprecian bien los componentes individuales del archivo WSDL. Después de una introducción inicial, que también incluye una referencia a WSDL y XSD, siguen los tipos de descripciones abstractas: types, messages e interface. Finalmente, la segunda mitad consiste en descripciones concretas, con el endpoint integrado en el service.