Programación Web en cliente

Funcionamiento de los Web services

En el siguiente punto vamos a estudiar como se realiza una comunicación mediante Web service. Lo primero que vamos a ver son los protocolos y lenguajes que se utilizan en la comunicación entre computadores remotos cuando esta comunicación la realizamos a través de un Web service. Estos son XML, SOAP, WSDL, UDDI.

  • XML: Es el lenguaje de etiquetas en el que esta basado el formato de los mensajes de cada Web Service.
  • SOAP: Simple Object Access Protocol, es un protocolo de comunicación de mensajes por medio de Internet basado en XML. Los mensajes SOAP son el núcleo de la comunicación entre un cliente y un Web Service. Cuando se realiza una comunicación entre dos maquinas, estas envían y reciben la información a través de mensajes SOAP, los cuales tienen este formato:
<?xml version="1.0"?> //version del xml
//el documento raiz es un elemento envelope(sobre)
//donde especificamos el namespace y el encoding
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
   Soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> 
   //cabecera con referencias al mensaje (pj: autentificación)
   <soap:Header> 
      ...
   </soap:Header>
   // cuerpo del mensaje, puede ser de petición o respuesta
   <soap:Body> 
      ...
      // los fallos se notifican en esta sección
      <soap:Fault> 
         ...
      </soap:Fault>
   </soap:Body>
</soap:Envelope>
  • WSDL: Web Service Description Language. Es un protocolo basado en XML que describe los accesos al Web Service. Podemos decir que la comunicación se realiza mediante mensajes SOAP, los cuales se envían y reciben de la forma que indica el documento WSDL. Este documento (WSDL) nos va a indicar que podemos “preguntar” o indicar que realice la maquina remota. Seguidamente mostramos un ejemplo de un fichero WSDL:
<?xml version="1.0">
//elemento raiz
<definitions>
   // Especifica los tipos de datos a usar en el webservice 
   <types> 
      ...
   </types>
   // Se definen los metodos y parámetros que se usuaran 
   // en la comunicación.
   <message> 
      ...
   </message>
   // Aqui es donde estan definidas las llamadas, 
   // tanto de peticion como de respuesta.
   <portType> 
      ...
   </portType>
   // especifica el formato del mensaje y 
   // detalles de cada portType
   <binding> 
      ...
   </binding>
</definitions>
  • UDDI: Universal Discover Description and Integration. Cátalogo independiente, basado en XML, que lista los negocios de internet de todo el mundo. Es una iniciativa industrial abierta, donde los negocios se listan a sí mismos en internet, como si se tratase de las páginas amarillas en una guía telefónica. No es una parte como tal en la comunicación mediante Web Service, pero es donde podemos encontrar información sobre los Web services ofrecidos por la industria. Podemos ver este catalogo en http://uddi.xml.org/.

En el siguiete esquema se puede ver como se realiza una comunicación mediante mensajes SOAP entre un cliente (Web User) y un servidor que ofrece un Web Service:

De forma global, podemos ver la interacción entre los diferentes componentes de la comunicación por Web service en el diagrama que mostramos a continuación. Tenemos dos entidades (un cliente y un servidor) que se comunican mediante mensajes SOAP a través de HTTP (Internet). La forma de comunicarse se establece en el documento WSDL. También se puede ver como el cliente encuentra el Web service que ofrece el servidor en el catálogo UDDI (por ejemplo, busco un Web service de conversión de divisas en UDDI).