Web Service: Definición, utilización y estructura del WSDL


  • DEFINICIÓN

WSDL (Web Services Description Language) es un protocolo basado en XML que describe los accesos al Web Service. Podríamos decir que es el manual de operación del mismo, porque nos indica cuáles son las interfaces que provee el Servicio web y los tipos de datos necesarios para su utilización.

WSDL es el lenguaje propuesto por el W3C para la descripción de Servicios Web y permite describir la interfaz de un servicio web en un formato XML. Una de sus ventajas es que permite separar la descripción abstracta de la funcionalidad ofrecida por un servicio, es decir, de los detalles concretos del mismo, como puede ser el enlace a un protocolo de red o un formato de mensaje concreto que puede ser SOAP, HTTP o MIME.

El WSDL describe los servicios Web a través de los mensajes que se intercambian entre el proveedor del servicio y el cliente.

  • UTILIZACIÓN

Los pasos que se realizan al consumir el servicio son los siguientes:

  1. Lo primero que realiza el cliente al hacer una solicitud al servicio es tomar la definición del archivo WSDL.
  2. El servidor entrega el fichero WSDL. Este archivo indica a la petición los métodos y propiedades de ese servicio que están disponibles.
  3. El cliente hace la petición en el formato que espera el servidor según las especificaciones del fichero WSDL en el que se dice qué parámetros acepta y de qué tipo.
  4. El servidor entrega el resultado de la consulta.
  • ESTRUCTURA

Un ejemplo de la estructura de un documento WSDL es el siguiente:

Donde:

Elemento WSDL Descripción
<?xml version=”1.0″> Un documento WSDL es como cualquier documento XML y se basa en los esquemas, por lo que debe comenzar con dicha etiqueta.
<definitions> Comienzo del documento, este tag agrupa a todos los demás elementos
<types> Se definen los tipos de datos utilizados en los mensajes. Se utilizan los tipos definidos en la especificación de esquemas XML.
<message> Se definen los métodos y parámetros para realizar la operación. Cada message puede consistir en una o más partes (parámetros). Las partes pueden ser de cualquiera de los tipos definidos en la sección anterior.
<portType> Esta sección es la más importante, ya que definen las operaciones que pueden ser realizadas, y los mensajes que involucran (por ejemplo el mensaje de petición y el de respuesta).
<binding> Se definen el formato del mensaje y detalles del protocolo para cada portType.

En la etiqueta <definitions> podemos tener los siguientes atributos:

  • xmlnsc – Namespace al que pertenece el WSDL, http://schemas.xmlsoap.org/wsdl/
  • name – Podemos tener que el Servicio Web introduzca el nombre del propio servicio en el momento de crear el WSDL.

    En realidad, se utiliza la etiqueta <service name=”MiServicioWeb”> para indicar el nombre del servicio, depende de la antigüedad del servicio y de la tecnología que se haya utilizado para crearlo.

Por tanto, dentro del árbol <service> podemos tener los siguientes atributos e hijos:

  • name – Como hemos dicho antes, éste atributo indica el nombre del Servicio Web.
  • <documentation> – Dentro del arbol del Servicio se puede abrir otra etiqueta para incluir una descripción del servicio.
  • <port> – Aquí se indica la dirección y el tipo de acceso de los Servicios Web. Podría ser:
    1. SOAP con <soap:address location=”http://localhost:8082/MiServicio/Servicio1.wsdl” />
    2. HTTP GET con <http:address location=”http://localhost:8082/MiServicio/wsdl/Servicio.jsp” />

Los métodos y parámetros de recepción y entrega de información se envían en elementos con la etiqueta <message>.

Los métodos se llaman Mensajes y, normalmente, suele haber al menos, uno de entrada y otro de salida.

Si tuviéramos un método llamado getDatos() que recibe un parámetro String con el apellido en el Servicio Web, la forma de definirlo sería la siguiente:

Los parámetros se expresan de la siguiente forma, <part name=”param1″ type=”xsd:int” /> ó <part name=”param2″ type=”xsd:float” /> y los tipos de datos que podemos utilizar en un WSDL son los mismos que podemos usar en un XSD (Schema XML). También es posible definir clases en el servicio y devolver un parámetro del tipo de esa clase, pero siempre hemos de devolver tipos de datos primarios. Aunque devolvamos clases personalizadas por nosotros, dichas clases devolverán primitivos en sus métodos y propiedades.

Para poder indicar si los parámetros son input o output, se utiliza la etiqueta <operation>, dónde se indica el input message y el message de output. La colección de todas las operaciones (métodos) expuestos por un servicio se llama portType y se definen dentro de WSDL con la etiqueta <portType>:

Por último queda el <binding>, que es el enlace que establece la transición desde tipos de datos abstractos a tipos de datos concretos:

Veamos ahora entonces un ejemplo de Web Service completo, con todas sus etiquetas y partes bien definidas:

Dejar un Comentario