SlideShare una empresa de Scribd logo
1 de 61
Servicios Web


     Programación de Red.
    Ingeniería en Informática
Servicios Web
Objetivos:
 Conocer el concepto de Servicios Web y toda
  la tecnología asociada
 Conocer los protocolos más importantes
  asociados a Servicios Web
 Estudiar SOAP, WSDL y UDDI (WSIL)
 Dar un visión general sobre orquestación de
  Servicios Web
 Conocer algunos aspectos de seguridad en
  Servicios Web                                 2
Servicios Web

 Concepto de Servicio Web.
 SOAP.
 WSDL.
 UDDI (WSIL).
 Orquestación de Servicios Web.
 Seguridad


                                   3
WSDL
 WSDL (Web Services Description Language)
   Permite especificar en XML las operaciones y tipos de
    datos de un servicio web
   Estandarizado por el W3C
   Analogía con CORBA: WSDL/IDL
   WSDL describe:
       Información sobre la interfaz exportada
       Tipos de datos de los mensajes intercambiados
       Información de “binding” (mecanismos de interacción)
        definiendo cómo transportar los mensajes en la comunicación
       Direcciones para localizar los servicios (localización)
    Representa como un contrato entre el proveedor y el
     usuario del servicio (similar interfaz Java)               4
WSDL
¿Qué es WSDL?
 WSDL es el lenguaje estándar (dialecto de XML)
  para la descripción de Servicios Web
 Una definición WSDL es un documento escrito en
  XML que describe un servicio Web a partir de los
  mensajes que acepta y las operaciones que se
  pueden ejecutar sobre ellos
 WSDL es extensible y se pude utilizar para
  describir, prácticamente, cualquier servicio de red,
  incluyendo SOAP sobre HTTP e incluso
  protocolos que no se basan en XML como DCOM
  sobre UDP
                                                    5
SOAP
Objetivos de WSDL
  Definir los mensajes y las operaciones de
   manera abstracta, para luego vincularlos a un
   protocolo de transporte y un formato de
   mensajes concreto ⇒ permite al proveedor de
   los servicios reutilizar estas definiciones e
   implementar los mismos servicios con distintos
   formatos de mensaje y distintos protocolos de
   transporte
  Ser muy general para definir cualquier tipo de
   servicio web. Su uso no se restringe a SOAP
   ⇒ WSDL 1.1 → SOAP sobre HTTP y SMTP         6
WSDL
WSDL ofrece un marco para definir:
  Inteface ⇒ operaciones con sus entradas y salidas
  Access Specification ⇒ SOAP bindings (RPC)
  Endpoint ⇒ Localización del Sevicio
                         Soporta
    Port Type                            Operation
     Formatos y
     Protocolos                         Input y Output
                       Cómo codificar
     Binding                             Message

          Implementa

                           Ofrece
       Port                               Service        7
WSDL
WSDL especifica:
  Un documento WSDL describe tres
  propiedades fundamentales de un servicio web
      Qué hace un servicio ⇒ los mensajes y las
       operaciones que soporta
      Cómo se accede al servicio (mecanismos de
       interacción (binding)) ⇒ qué protocolo hay que usar
       para acceder al servicio y cómo se representan los
       datos de las operaciones
      Dónde está ubicado el servicio web (localización
       del servicio) ⇒ una dirección URL si se usa HTTP,
       una dirección de e-mail si se usa SMTP, etc.      8
WSDL
Esquema WSDL




               9
WSDL
WSDL
  Un documento WSDL describe los servicios
   como colecciones puertos (puntos finales de
   red)
  WSDL separa: la definición abstracta de
   puertos y de mensajes (especificación
   abstracta) de la instalación concreta de red o
   de los enlaces del formato de datos
   (implementación concreta de esas
   especificaciones) ⇒ reutilización de
   definiciones abstractas (mensajes y tipos de
   puertos)                                         10
WSDL
WSDL
 WSDL separa: la definición de la interfaz del
  servicio web (interfaz abstracta) de la definición
  de la implementación (servicio web)
 Conceptos:
      Mensajes ⇒ Descripciones abstractas de los datos
       que se están intercambiando
      Tipos de puertos ⇒ Colecciones abstractas de
       operaciones
      Puerto ⇒ Un puerto se define por la asociación de
       una dirección de red y un enlace reutilizable; una
       colección de puertos define un servicio            11
WSDL
WSDL
 Ventajas del uso de WSDL:
   Tener perfectamente definida la interfaz del servicio
    web ⇒ nombre de la función, parámetros y orden
   Facilitar la estructuración de objetos y su
    construcción (basado en XML)
   Reducir el coste de los cambios en los clientes ⇒
    permitir actualizaciones casi automáticas y reducir
    los tiempos entre codificación y explotación
   Hacer atractivo el uso de servicios web
   Existencia de herramientas que generan
    automáticamente documentos WSDL                    12
WSDL
WSDL
 Desventajas del uso de WSDL:
   No hay manera de ver si el proveedor del
    servicio ha realizado cambios en la interfaz
    de entrada ⇒ enviar mensajes a los clientes
    avisando de dichos cambios
   Define completamente la semántica de los
    servicios web?


                                              13
WSDL
Estructura de un documento WSDL
  Especificación WSDL + (parte abstracta + parte
   concreta)
  Parte abstracta ⇒ tipos
   (estructuras de datos que se
   intercambian), mensajes,
   operaciones y tipos de puertos
  Parte concreta ⇒ protocolo de
   transporte (binding), conjunto
   exacto de puertos que
   implementa, direcciónes en los
   que están accesibles y los
   servicios (agrupaciones lógicas de
                                              14
   puertos)
WSDL
Estructura de un documento WSDL
  Tipos ⇒ Estructuras de datos (tipos de datos
   que usarán los mensajes) que se intercambian
      XML Schema tiene tipos básicos pero pertime definir
       tipos complejos
  Mensajes ⇒ Cada mensaje (descripciones
   abstractas de los datos que se intercambian)
   es un documento tipado con partes. Cada parte
   se caracteriza por un nombre y un tipo
      Por ejemplo, la invocación de un procedimiento con
       dos parámetros, un entero y un real ⇒se puede
       definir como un mensaje con dos partes           15
WSDL
Estructura de un documento WSDL
  Operaciones ⇒ Hay 4 tipos de operaciones
   (especificación de la interfaz abstracta)
       One-way (un sentido) ⇒ El cliente invoca un servicio enviando
        un único mensaje al servidor, pero no recibe respuesta del
        servidor (1 mensaje, asíncrono)
       Notificacion (notificación) ⇒ El servidor envía un único
        mensaje al cliente (1 mensaje, asíncrono)
       Request-response (petición-respuesta) ⇒ El servidor es
        invocado por el cliente y responde (2 mensajes, síncrono).
        Comunicación tipo RPC
       Solicit-response (solicitud-respuesta) ⇒ El servidor invoca
        una petición y espera respuesta del cliente (2 mensajes,
        síncrono)
  Tipos de puerto ⇒ Agrupan operaciones                          16
WSDL
Estructura de un documento WSDL
  Binding (InterfaceBinding) ⇒ Especifica la
   codificación del mensaje y el protocolo de
   transporte (protocol bindings) para todas las
   operaciones y mensajes definidos en un tipo de
   puerto. Por ejemplo
       Una operación en estilo RPC
       El mensaje de una operación tiene que utilizar
        SOAP como protocolo de aplicación, y HTTP como
        protocolo de transporte
       Reglas de codificación utilizadas para serializar
        partes de un mensaje en XML: literal y encoding
        (RPC, utiliza reglas de codificación SOAP)        17
WSDL
Estructura de un documento WSDL
  Binding (InterfaceBinding) ⇒ Mecanismo de
   enlace entre la definición abstracta de un
   servicio web y una implementación específica,
   utilizando: (1) un protocolo de mensajes, un
   modelo de codificación de datos y un protocolo
   de transporte concretos
  Puertos (Ports o EndPoints) ⇒ Combinan la
   información de los Bindings con direcciones de
   red (especificados por una URI) en la que se
   puede acceder a la implementación del tipo
   de puerto
                                               18
WSDL
Estructura de un documento WSDL
  Servicios ⇒ puertos que están implementados
  como un grupo. Permiten que la misma
  funcionalidad sea accesible en diferentes
  estilos de interacción y con diferentes
  protocolos de transporte
      Agrupaciones lógicas de puertos. Un servicio específico WSDL
       podría estar accesible en diferentes direcciones (URLs de
       diferentes máquinas)
      Un servicio WSDL agrupa puertos relacionados, disponibles
       con frecuencia en una misma dirección
      Otra agrupación posible es utilizar diferentes puertos que
       representan diferentes bindings del mismo tipo de puerto 19
WSDL
Estructura de un documento WSDL
  Añadiendo InterfaceBindings, Ports y Services ⇒ la
   definición de la interface se va concretado
  Con la información de binding ⇒ los usuarios conocen
   qué protocolos usar, cómo estructurar los mensajes
   XML, y qué se espera al enviar el mensaje → WSDL
   1.1 define extensiones binding para SOAP, HTTP GET
   y POST, y MIME
  Con la información de port ⇒ el usuario conoce la
   dirección en la que se implementa un tipo de puerto
  Con el service ⇒ el usuario conoce todos los puertos
   que están implementados como un grupo               20
WSDL
Descripciones del WSDL
  El documento WSDL es descriptivo, y su finalidad es la
   de ofrecer toda la información posible al programador
   para poder realizar la codificación del cliente que
   aceptará el servicio o los servicios descritos en él
  Una interfaz tiene la misión de dar a conocer la forma
   que tendrá un objeto visto desde fuera, conociendo sus
   “enganches” con el resto del sistema, pero no tiene que
   dar información de qué o cómo se realizan las
   operaciones por dentro
  Un documento WSDL utiliza los siguientes elementos
   en la definición de servicios web
       types (tipos), message (mensaje), operation (operación) portType
        (tipo de puerto), binding (enlace), port (puerto) y service (servicio)   21
WSDL
Descripciones del WSDL
  types ⇒ Contenedor de definiciones de tipos de datos
   que se intercambien en los mensajes, utilizando algún
   sistema de tipos (XML Schema, XSD)
  message ⇒ Descripción abstracta de los datos que se
   están intercambiando (colecciones de datos)
  operation ⇒ Descripción abstracta de una acción
   admitida por el servicio
  portType ⇒ Representación abstracta del servicio web
   (interfaz real del servicio web), indicando el orden de
   intercambio de mensajes. Conjunto abstracto de
   operaciones admitidas por uno o más puertos             22
WSDL
Descripciones del WSDL
  binding ⇒ Definición concreta de los portType.
   Especificación del protocolo de transporte y del
   formato de datos para un portType
   determinado
  port ⇒ Punto final único que se define como la
   combinación de un enlace y una dirección de
   red. Direcciones implementando el servicio
  service ⇒ colección de puntos finales
   (puertos) relacionados
                                                23
WSDL
Descripciones del WSDL
  Relación entre elementos de un documento WSDL
                             message → colecciones de
                             datos, representaciones
                             abstractas de los datos
                             transmitidos. Cada mensaje
                             conta de varias partes lógicas
                             (part), cada una de las
                             cuales tiene asociado un tipo
                             (type) que debe de estar
                             previamente definido. Cada
                             part indica un parámetro que
                             se transmitirá junto con el
                             mensaje                     24
WSDL
Ejemplo de documento WSDL




                            25
WSDL
Morfología de un documento WSDL




                                  26
WSDL
Morfología de un documento WSDL
  Archivo XML:    <?xml version=“1.0”?>
  Elemento raíz ⇒ <wsdl:definitions …>
  Atributos de definitios:
      name, targetNamespace,
       xmlns=“http://schemas.xmlsoap.org/defnitions”, y
       otros namespaces de: SOAP, XML Schema, etc.
  Partes del documento WSDL: Preámbulo,
   Descripción (de la traducción de método a
   mensaje), Información de mensajes y
   Localización del servicio                        27
WSDL
Morfología de un documento WSDL
                WSDL
      Tipos de datos <wsdl:type/>
                                      Preámbulo
      Mensajes <wsdl:message/>


     Interfaces <wsdl:portType/>      Descripción

   Implementaciones <wsdl:binding/>   Información de
                                      mensajes

    Localizaciones <wsdl:service/>    Localización del
                                      servicio       28
WSDL
Morfología de un documento WSDL
  Preámbulo
    Sirve para introducir el servicio ⇒ indicando los
     tipos de datos utilizados en las distintas
     transacciones, presentación de los mensajes que se
     darán durante las transacciones y la declaración de
     los namespaces que se van a utilizar
    Lenguaje la descripción y especificación de los tipos
     de datos en el documento ⇒ XML Schema
    Vincular la definición de tipos de datos al
     documento: (1) dentro del preámbulo <wsdl:type
     …/>, (2) en archivo aparte <wsdl:import …/>       29
WSDL
Morfología de un documento WSDL
  Preámbulo
   <wsdl:definitions …>
    <wsdl:import namespace”URI” location=“URI”/>
    <wsdl:documentation> … </wsdl:documentation>
    <wsdl:import …/>
    <wsdl:types>
     <wsdl:documentation …/>
     <wsdl:schema …/>
    </wsdl:types>
    <wsdl:message name=“nombreFuncion”>
     <wsdl:documentation …/>
     <wsdl:part name= “…” element=“…” type“…”/>
                                                   30
    </wsdl:message>
WSDL
Morfología de un documento WSDL
  Descripción
    Sirve para describir de forma abstracta el servicio
     web. Traducción de método a mensaje
    Elemento <wsdl:portType> y debe haber uno por
     cada servicio que se quiere concretar
    Dentro de <wsdl:portType> se definirán las
     operaciones (interfaces) y tipos de mensajes que se
     van a utilizar que puede acceder un cliente ⇒
     funciones públicas que soporta (<wsdl:operation>)
    Las funciones se llaman mediante mensajes y se
     contestarán también a través de ellos           31
WSDL
Morfología de un documento WSDL
  Descripción
    Dentro de cada <wsdl:operation> es necesario
     definir los mensajes que se darán durante su
     llamada, y el orden en que se pueden dar (modelo
     de intercambio de mensajes)
    Tipos de mensajes:
          input ⇒ mensajes que emite el cliente como entrada al
           servicio web
          output ⇒ mensajes que son emitidos por el servicio web
           (respuesta a los mensajes input), y contendrán los datos de
           respuesta
           fault ⇒ mensajes de condiciones de error
                                                                   32
       
WSDL
Morfología de un documento WSDL
  Descripción
   <wsdl:portType name=“…”>
    <wsdl:documentation …/>
    <wsdl:operation name=“…”>
     <wsdl:documentation …/>
     <wsdl:input message=“…”> … </wsdl:input>
     <wsdl:output message=“…”> … </wsdl:input>
     <wsdl:fault name=“…” message=“…”>
      <wsdl:documentation …/>
     </wsdl:fault>
    </wsdl:operation>
   </wsdl:portTypes>
   <wsdl:serviceType name=“…”>
    <wsdl:portType name=“…”>
   </wsdl:serviceType>                           33
WSDL
Morfología de un documento WSDL
  Operación unidireccional (one-way) ⇒ Petición → un
   mensaje de entrada del cliente al servidor sin esperar
   respuesta <wsdl:input message=“”>
  Operación petición/respuesta (request-response) ⇒
   Llamada a una función remota (envia petición y
   devuelve mensaje de respuesta) <wsdl:input
   message=“”> <wsdl:output message=“”>
  Operación solicitud/respuesta (solicit-response) ⇒ El
   servidor envia un mensaje y el cliente respode
   <wsdl:output message=“”> <wsdl:input message=“”>
  Operación de notificación (notification) ⇒ El servidor
   envía un mensaje y no recibe ninguna respuesta
   <wsdl:output message=“”>                                 34
WSDL
Morfología de un documento WSDL
 Modelo de intercambio de mensajes (Op.) ⇒ One-way,
 Notificacion, Request-response, Solicit-response




                                                 35
WSDL
Morfología de un documento WSDL
  Información de mensajes
     Sirve para establecer el enlace ente la interfaz
      abstracta y las características concretas de la
      implementación (método de transporte, dirección de
      acceso, ...). <wsdl:binding>
     <wsdl:binding> ⇒ define cómo se transmitirán los
      mensajes y qué protocolo de transporte (SOAP,
      HTTP, SMTP, …) se utilizará. Además se completa
      la información del elemento <wsdl:portType>
      (definción concreta de la interfaz)
     Definición más complicada que <wsdl:portType>  36
WSDL
Morfología de un documento WSDL
  Información de mensajes
     <soap:binding> ⇒ indica que los mensajes van a
      ser de tipo SOAP. Define el protocolo de transporte
      mediante el atributo transport, y el tipo de mensaje
      SOAP que se va a transmitir mediante el atributo
      style (rpc y document (transacciones EDI))
     <soap:body> ⇒ define qué partes del mensaje se
      incluirán en el Body del mensaje SOAP, y cómo
      serán incluidas las partes. El atributo parts
      (opcional) indica qué partes deben incluirse en el
      Body de mensaje SOAP, y si no aparece ⇒ se
      incluirán todas                                   37
WSDL
Morfología de un documento WSDL
  Información de mensajes
     <soap:fault> ⇒ aparece para indicar que que se
      realice una acción distinta en caso de cualquier tipo
      de error y especifica el contenido del mensaje que
      se recibirá en tal caso (especifica los contenidos del
      elemento detail (además de faultcode,
      faultstring y faultactor) dentro del elemento
      Fault en el mensaje SOAP)
     <soap:header> y <soap:headerdefault> ⇒ permiten
      definir cabeceras que serán transmitidas dentro del
      elemento Header del mensaje SOAP, y aparecerá
      antes del elemento <soap:body>                     38
WSDL
Morfología de un documento WSDL
  Información de mensajes
     <soap:operation> ⇒ define el valor del elemento
      soapAction cuando se utiliza el protocolo HTTP. Y
      sirve para conocer el tipo de mensaje que se dará
      mendiante el atributo style
     <wsdl:operation> ⇒ dentro de este elemento se
      detalla la información de las funciones que están
      disponibles en la interfaz, y el nombre de dichas
      funciones debe de coincidir con el que se le dio en
      <wsdl:portType>. Mediante el atributo name se indica
      el nombre de la función que se definirá
     <wsdl:documentation>, <wsdl:input>,
      <wsdl:output> y <wsdl:fault> ⇔ <wsdl:portType>   39
WSDL
Morfología de un documento WSDL
  Información de mensajes
   <wsdl:binding name="Hello_Binding" type="tns:Hello_PortType">
    <soap:binding style="rpc"
       transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="sayHello">
     <soap:operation soapAction="sayHello"/>
     <wsdl:input>
      <soap:body
       encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
       namespace="urn:examples:helloservice"
       use="encoded"/>
     </wsdl:input>
     <wsdl:output>
      <soap:body
       encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
       namespace="urn:examples:helloservice"
       use="encoded"/>
     </wsdl:output>
    </wsdl:operation>                                              40
   </wsdl:binding>
WSDL
Morfología de un documento WSDL
  Localización del servicio
      <wsdl:service> ⇒ sirve para indicarnos dónde está
       el servicio web y dónde hay que enviar las
       peticiones
      <wsdl:port> ⇒ Indica el puerto al que se conectará
       el cliente para realizar las peticiones
      <soap:address> ⇒ se utiliza dentro del elemento
       <wsdl:port> para indicar la URL del acceso al
       servicio SOAP, indicada en el atributo location
      Un servicio web no tiene porque está ligado a una
       única URL. Diferentes URLs para un mismo servicio
       → definir varios <wsdl:port>                     41
WSDL
Morfología de un documento WSDL
  Localización del servicio
   <wsdl:service name="Hello_Service">
    <wsdl:documentation>WSDL File for
      HelloService</wsdl:documentation>
    <wsdl:port binding="tns:Hello_Binding“
      name="Hello_Port">
     <soap:address
      location="http://localhost:8080/soap/servlet/rpcrouter"/>
    </wsdl:port>
   </wsdl:service>



                                                            42
WSDL
Ejemplo de documento WSDL
<?xml version="1.0" encoding="UTF-8"?>
  <definitions name="HelloService"
  targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl"
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <message name="SayHelloRequest">
      <part name="firstName" type="xsd:string"/>
    </message>
    <message name="SayHelloResponse">
      <part name="greeting" type="xsd:string"/>
    </message>
    <portType name="Hello_PortType">
      <operation name="sayHello">
        <input message="tns:SayHelloRequest"/>
        <output message="tns:SayHelloResponse"/>
      </operation>
    </portType>
                                                                    43
WSDL
Ejemplo de documento WSDL
   <binding name="Hello_Binding" type="tns:Hello_PortType">
     <soap:binding style="rpc“ transport="http://schemas.xmlsoap.org/soap/http"/>
     <operation name="sayHello">
       <soap:operation soapAction="sayHello"/>
       <input>
         <soap:body
           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
           namespace="urn:examples:helloservice"
           use="encoded"/>
       </input>
       <output>
         <soap:body
           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
           namespace="urn:examples:helloservice"
           use="encoded"/>
       </output>
     </operation>
   </binding>
   <service name="Hello_Service">
     <documentation>WSDL File for HelloService</documentation>
     <port binding="tns:Hello_Binding" name="Hello_Port">
       <soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/>
     </port>
   </service>
 </definitions>
                                                                                    44
WSDL
Ejemplo de documento WSDL




                            45
WSDL
Ejemplo de documento WSDL a partir de Java
  Interfaz en Java
   public Hotel[] buscarHoteles(String ciudad);

   public class Hotel {
     private String nombre;
     private String ciudad;
     private String direccion;
     private String telefono;
     private String url;
     public void setNombre(String nombre)
      { this.nombre = nombre; }
     public String getNombre()
      { return nombre; }
     … … …
   }                                              46
WSDL
Ejemplo de documento WSDL a partir de Java
 <types>
   <schema targetNamespace='http://tempuri.org/type‘
     xmlns='http://www.w3.org/2001/XMLSchema‘
     xmlns:SOAP-    ENC='http://schemas.xmlsoap.org/soap/encoding/‘
     xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/‘
     xmlns:tns='http://tempuri.org/type' elementFormDefault='qualified'>
     <complexType name='hotel'>
       <sequence>
          <element name='nombre' type='xsd:string'/>
          <element name='ciudad' type='xsd:string'/>
          <element name='direccion' type='xsd:string'/>
          <element name='telefono' type='xsd:string'/>
          <element name='url' type='xsd:string'/>
       </sequence>
     </complexType>
     <complexType name ='ArrayOfHotel'>
       <complexContent>
          <restriction base='SOAP-ENC:Array'>
            <attribute ref='SOAP-ENC:arrayType' wsdl:arrayType='tns:hotel[]'/>
          </restriction>
       </complexContent>
     </complexType>
   </schema>                                                                     47
 </types>
WSDL
Ejemplo de documento WSDL a partir de Java
 <message name='obtenerHoteles'>
   <part name='Ciudad' type='xsd:string'/>
 </message>
 <message name='obtenerHotelesResponse'>
   <part name='Result' type='typens:ArrayOfHotel'/>
 </message>
 <portType name='ServicioHotelPortType'>
   <operation name='obtenerHoteles'>
     <input message='wsdlns:obtenerHoteles'/>
     <output message='wsdlns:obtenerHotelesResponse'/>
   </operation>
   <!- Incluir operaciones adicionales que tuviera el portType -->
 </portType>




                                                                     48
WSDL
Ejemplo de documento WSDL a partir de Java
 <binding name='ServicioHotelSoapBinding' type='wsdlns:ServicioHotelPortType'>
   <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
   <operation name='obtenerHoteles'>
     <soap:operation
       soapAction='http://tempuri.org/action/ServicioHotel.obtenerHoteles'/>
       <input>
         <soap:body use='encoded' namespace='http://tempuri.org/message/‘
           encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
       </input>
       <output> <soap:body use='encoded‘ namespace='http://tempuri.org/message/‘
         encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
       </output>
     </operation>
     <!- Aquí se podrían poner más operaciones –->
 </binding>
 <service name='servicioH' >
   <port name='ServicioHotelSoapPort' binding='wsdlns:ServicioHotelSoapBinding'>
     <soap:address location='http://155.54.15.121/servicioH/servicioH2.ASP' />
   </port>
   <!- Aquí podríamos poner ports adicionales -->
 </service>                                                                      49
WSDL
Ejemplo de documento WSDL a partir de Java
 Definición completa del servicio web ⇒ Definición de tipos,
 mensajes, portTypes, binding y service




                                                               50
WSDL
Ejemplo de documento WSDL a partir de Java
 <?xml version='1.0' encoding='UTF-8' ?>
 <definitions name ='servicioH' targetNamespace =
 'http://tempuri.org/wsdl/‘
   xmlns:wsdlns='http://tempuri.org/wsdl/‘
   xmlns:typens='http://tempuri.org/type‘
   xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/‘
   xmlns:xsd='http://www.w3.org/2001/XMLSchema‘
   xmlns='http://schemas.xmlsoap.org/wsdl/'>
   <documentation>
     Este servicio web busca hoteles en una ciudad específica
   </documentation>
   <types> … </types>
   <message> … </message>
   <portType> … </portType>
   <binding> … </binding>
   <service> … </service>
 </definitions>                                                 51
WSDL
Protocolos en WSDL
  Según la especificación, WSDL puede usarse
   con cualquier protocolo de transporte y de
   formato de mensajes. La especificación WSDL
   sólo define bindings para tres protocolos:
   SOAP, HTTP GET/POST y MIME
  El binding SOAP y el binding HTTP definen el
   modo de transporte, el modo de invocación y la
   codificación. Sin embargo, el binding MIME
   sólo define el modo de codificación y ha de
   combinarse con alguno de los anteriores para
   concretar el modo de transporte e invocación
                                              52
WSDL
Protocolos en WSDL. Binding SOAP
  El binding SOAP para WSDL proporciona una manera
   de indicar:
       Que los mensajes van a ser de tipo SOAP
       La cabecera SOAPAction que hay que usar en los
        mensajes si el transporte es HTTP
       El resto de cabeceras que haya que usar en los
        mensajes
       La dirección a la que se deben enviar los mensajes
  Los elementos de un binding no forman parte del
   espacio de nombres de WSDL. El binding SOAP está
   definido en http://schemas.xmlsoap.org/wsdl/soap/53
WSDL
Protocolos en WSDL. Binding SOAP
  Elementos del binding SOAP
      <soap:binding>, <soap:body>, <soap:fault>,
       <soap:header>, <soap:headerdefault>,
       <soap:operation>, <soap:address>
   <binding name="TemperaturaActualBindingSoap"
      type="tns:TemperaturaActualPortType">
      <soap:binding style="document"
      transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="GetTemperaturaActual">
        <soap:operation soapAction="http://example.com/GetTemperaturaActual"/>
        <input>
          <soap:body use="literal"/>
        </input>
        <output>
          <soap:body use="literal">
        </output>
      </operation>                                                             54
   </binding>
WSDL
Protocolos en WSDL. Binding HTTP GET/POST
  El binding define tres maneras diferentes en enlazar un
    mensaje con una dirección HTTP:
        HTTP GET con codificación de la URL
        HTTP GET con sustitución de URL
        HTTP POST
  Estos métodos permiten que un servicio sea usado por
    un navegador HTTP estándar ⇒ lo que haría al servicio
    accesible a una gran variedad de clientes
    (navegadores, PDAs, teléfonos móviles, etc.)
 <binding name="postBinding" type="addPortType">
   <http:binding verb="POST"/>
   <operation name="add">
     <http:operation location="o1"/>
     <input> … </input> … <output> … </output> …
   </operation>
                                                       55
 </binding>
WSDL
Protocolos en WSDL. Binding MIME
  Hay enlaces definidos para los tipos multipart / related
   y text / xml. Los demás tipos MIME también se pueden
   representar usando el elemento mime:content.
   También es posible usar tipos MIME junto con SOAP
   para enlazar partes diferentes del mismo mensaje.
  Los enlaces de datos MIME se pueden usar dentro de
   las secciones input o output del elemento binding
 <binding ...>
   <operation ...>
     <input>
       <--Elementos mime-->
     </input>
     <output>
       <--Elementos mime-->
     </output>
   </operation>                                          56
  </binding>
WSDL
Implicaciones del modelo WSDL
  Los diferentes tipos de interacción ⇒ Suponen que un
   servidor puede invocar servicios (se comporta como un
   cliente)
  La ventaja de la separación de la parte abstracta y
   concreta, es que la primera puede reutilizarse ⇒ Un
   WDSL puede importar otro WDSL <import …>. Por
   ejemplo, un documento WSDl puede importar la parte
   abstracta y concretar los “bindings” y las “direcciones”
  Si los mensajes definido en WSDL se intercambian en
   SOAP, entonces el InterfaceBinding contiene toda la
   información necesaria para construir automáticamente
   los mensajes SOAP
                                                        57
WSDL
Utilización de WSDL (según W3C)
  Lenguaje de descripción de servicio tradicional
   (contrato que implementa un Servicio Web) ⇒ El
   contrato indica cómo interactuar con el servicio, datos a
   enviar y devolver, operaciones involucradas y el
   formato y protocolo
  Entrada para compiladores de stub y otras
   herramientas ⇒ Los servidores de aplicaciones dan
   facilidades para generar stubs de documento WSDL y
   para generar WSDL de clases (p.e. clases java)
  Uso no definido claramente por el W3C en referencia a
   la semántica ⇒ Uso de WSDL para capturar la
   información que permitirá a los diseñadores razonar
   sobre la semántica de los servicios                   58
WSDL
Utilización de WSDL (según W3C)




                                  59
WSDL
Conclusiones sobre WSDL
  WSDL permite describir servicios web de
   manera formal
  WSDL permite definir la interfaz del servicio,
   cómo se enlazará a uno o varios protocolos de
   transporte, y los tipos de datos que utiliza
  WSDL permite definir el método de transporte y
   de invocación, y también especificar la
   dirección de acceso al servicio
  WSDL es muy flexible ⇒ no limita su uso a una
   codificación, ni a un protocolo de transporte, ni
   a un modelo de invocación concretos           60
WSDL
Conclusiones sobre WSDL
  Los enlaces concretos como SOAP, HTTP y
   MIME son simplemente extensiones de WSDL,
   y se pueden definir otros enlaces para
   cualquier protocolo
  Existen herramientas para poder crear un
   proxy de cliente o un esqueleto (skeleton) de
   un servicio de forma automática a partir de un
   documento WSDL ⇒ Lo único necesario para
   acceder a un servicio = definición en WSDL
  WSDL es equivalente a los IDLs ⇒ Servicios
   Web son más complejos de describir          61

Más contenido relacionado

La actualidad más candente

10. presentación de redes con power point
10. presentación de redes con power point10. presentación de redes con power point
10. presentación de redes con power pointrmticlydia
 
Capa de transporte
Capa de transporteCapa de transporte
Capa de transportelaura1352
 
Cuadro comparativo tecnologias WAN
Cuadro comparativo tecnologias WANCuadro comparativo tecnologias WAN
Cuadro comparativo tecnologias WANFlavioRobledo
 
Protocolos de red
Protocolos de redProtocolos de red
Protocolos de redlupeziitha
 
Introducción a la Capa de Red
Introducción a la Capa de RedIntroducción a la Capa de Red
Introducción a la Capa de RedJavier Peinado I
 
Protocolos de las capas sesion,presentacion y aplicacion
Protocolos de las capas sesion,presentacion y aplicacionProtocolos de las capas sesion,presentacion y aplicacion
Protocolos de las capas sesion,presentacion y aplicacionEduardo J Onofre
 
1 puentes-y-switch - redes
1   puentes-y-switch - redes1   puentes-y-switch - redes
1 puentes-y-switch - redesCarlos Nunhez
 
Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Juan Anaya
 
Esquema de fragmentación y Distribucion de BDD
Esquema de fragmentación y Distribucion de BDDEsquema de fragmentación y Distribucion de BDD
Esquema de fragmentación y Distribucion de BDDBlanca Parra
 

La actualidad más candente (20)

10. presentación de redes con power point
10. presentación de redes con power point10. presentación de redes con power point
10. presentación de redes con power point
 
Concurrencias BD
Concurrencias BDConcurrencias BD
Concurrencias BD
 
Servidor Apache
Servidor Apache Servidor Apache
Servidor Apache
 
ospf isis
ospf   isisospf   isis
ospf isis
 
Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
 
Comandos basicos en linux
Comandos basicos en linuxComandos basicos en linux
Comandos basicos en linux
 
Capa de transporte
Capa de transporteCapa de transporte
Capa de transporte
 
Cuadro comparativo tecnologias WAN
Cuadro comparativo tecnologias WANCuadro comparativo tecnologias WAN
Cuadro comparativo tecnologias WAN
 
Frame relay
Frame relayFrame relay
Frame relay
 
ASP.NET WEB API
ASP.NET WEB APIASP.NET WEB API
ASP.NET WEB API
 
Dispositivos de Redes
Dispositivos de RedesDispositivos de Redes
Dispositivos de Redes
 
Estandares
EstandaresEstandares
Estandares
 
Protocolos de red
Protocolos de redProtocolos de red
Protocolos de red
 
Introducción a la Capa de Red
Introducción a la Capa de RedIntroducción a la Capa de Red
Introducción a la Capa de Red
 
Protocolos de las capas sesion,presentacion y aplicacion
Protocolos de las capas sesion,presentacion y aplicacionProtocolos de las capas sesion,presentacion y aplicacion
Protocolos de las capas sesion,presentacion y aplicacion
 
Diagramas UML
Diagramas UMLDiagramas UML
Diagramas UML
 
1 puentes-y-switch - redes
1   puentes-y-switch - redes1   puentes-y-switch - redes
1 puentes-y-switch - redes
 
Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.Unidad 6 Protección y seguridad.
Unidad 6 Protección y seguridad.
 
Vista lógica
Vista lógicaVista lógica
Vista lógica
 
Esquema de fragmentación y Distribucion de BDD
Esquema de fragmentación y Distribucion de BDDEsquema de fragmentación y Distribucion de BDD
Esquema de fragmentación y Distribucion de BDD
 

Similar a Servicios Web: Conceptos Clave SOAP WSDL UDDI

Similar a Servicios Web: Conceptos Clave SOAP WSDL UDDI (20)

Wsdl bpel4ws chumpitaz
Wsdl bpel4ws chumpitazWsdl bpel4ws chumpitaz
Wsdl bpel4ws chumpitaz
 
S3-PD2-2.1. SOAP
S3-PD2-2.1. SOAPS3-PD2-2.1. SOAP
S3-PD2-2.1. SOAP
 
Servicios web service api rest en netbeans
Servicios web service api rest en netbeansServicios web service api rest en netbeans
Servicios web service api rest en netbeans
 
SOA y Web Services
SOA y Web ServicesSOA y Web Services
SOA y Web Services
 
Web services en sistemas distribuidos
Web services en sistemas distribuidosWeb services en sistemas distribuidos
Web services en sistemas distribuidos
 
S3-PD2.pptx
S3-PD2.pptxS3-PD2.pptx
S3-PD2.pptx
 
S3-PD2.pptx
S3-PD2.pptxS3-PD2.pptx
S3-PD2.pptx
 
Servicios Web
Servicios WebServicios Web
Servicios Web
 
02 - Servicios SOAP.pptx
02 - Servicios SOAP.pptx02 - Servicios SOAP.pptx
02 - Servicios SOAP.pptx
 
Act4 uni2
Act4 uni2Act4 uni2
Act4 uni2
 
Tema 3 0
Tema 3 0Tema 3 0
Tema 3 0
 
Tema 3 0
Tema 3 0Tema 3 0
Tema 3 0
 
Semana 15 -servicios_web
Semana 15 -servicios_webSemana 15 -servicios_web
Semana 15 -servicios_web
 
6-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Introducción
6-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Introducción6-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Introducción
6-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Introducción
 
WSDL.pdf
WSDL.pdfWSDL.pdf
WSDL.pdf
 
Servicios web
Servicios webServicios web
Servicios web
 
Semana 04 protocolo y seguridad
Semana 04 protocolo y seguridadSemana 04 protocolo y seguridad
Semana 04 protocolo y seguridad
 
S3-PD2-SOAP
S3-PD2-SOAPS3-PD2-SOAP
S3-PD2-SOAP
 
Servicios Web
Servicios WebServicios Web
Servicios Web
 
Charla Web Services
Charla Web ServicesCharla Web Services
Charla Web Services
 

Último

Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfluisantoniocruzcorte1
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIAAbelardoVelaAlbrecht1
 
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptAlberto Rubio
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfNataliaMalky1
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariamarco carlos cuyo
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 

Último (20)

Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
 
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundaria
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 

Servicios Web: Conceptos Clave SOAP WSDL UDDI

  • 1. Servicios Web Programación de Red. Ingeniería en Informática
  • 2. Servicios Web Objetivos:  Conocer el concepto de Servicios Web y toda la tecnología asociada  Conocer los protocolos más importantes asociados a Servicios Web  Estudiar SOAP, WSDL y UDDI (WSIL)  Dar un visión general sobre orquestación de Servicios Web  Conocer algunos aspectos de seguridad en Servicios Web 2
  • 3. Servicios Web  Concepto de Servicio Web.  SOAP.  WSDL.  UDDI (WSIL).  Orquestación de Servicios Web.  Seguridad 3
  • 4. WSDL  WSDL (Web Services Description Language)  Permite especificar en XML las operaciones y tipos de datos de un servicio web  Estandarizado por el W3C  Analogía con CORBA: WSDL/IDL  WSDL describe:  Información sobre la interfaz exportada  Tipos de datos de los mensajes intercambiados  Información de “binding” (mecanismos de interacción) definiendo cómo transportar los mensajes en la comunicación  Direcciones para localizar los servicios (localización)  Representa como un contrato entre el proveedor y el usuario del servicio (similar interfaz Java) 4
  • 5. WSDL ¿Qué es WSDL?  WSDL es el lenguaje estándar (dialecto de XML) para la descripción de Servicios Web  Una definición WSDL es un documento escrito en XML que describe un servicio Web a partir de los mensajes que acepta y las operaciones que se pueden ejecutar sobre ellos  WSDL es extensible y se pude utilizar para describir, prácticamente, cualquier servicio de red, incluyendo SOAP sobre HTTP e incluso protocolos que no se basan en XML como DCOM sobre UDP 5
  • 6. SOAP Objetivos de WSDL  Definir los mensajes y las operaciones de manera abstracta, para luego vincularlos a un protocolo de transporte y un formato de mensajes concreto ⇒ permite al proveedor de los servicios reutilizar estas definiciones e implementar los mismos servicios con distintos formatos de mensaje y distintos protocolos de transporte  Ser muy general para definir cualquier tipo de servicio web. Su uso no se restringe a SOAP ⇒ WSDL 1.1 → SOAP sobre HTTP y SMTP 6
  • 7. WSDL WSDL ofrece un marco para definir:  Inteface ⇒ operaciones con sus entradas y salidas  Access Specification ⇒ SOAP bindings (RPC)  Endpoint ⇒ Localización del Sevicio Soporta Port Type Operation Formatos y Protocolos Input y Output Cómo codificar Binding Message Implementa Ofrece Port Service 7
  • 8. WSDL WSDL especifica:  Un documento WSDL describe tres propiedades fundamentales de un servicio web  Qué hace un servicio ⇒ los mensajes y las operaciones que soporta  Cómo se accede al servicio (mecanismos de interacción (binding)) ⇒ qué protocolo hay que usar para acceder al servicio y cómo se representan los datos de las operaciones  Dónde está ubicado el servicio web (localización del servicio) ⇒ una dirección URL si se usa HTTP, una dirección de e-mail si se usa SMTP, etc. 8
  • 10. WSDL WSDL  Un documento WSDL describe los servicios como colecciones puertos (puntos finales de red)  WSDL separa: la definición abstracta de puertos y de mensajes (especificación abstracta) de la instalación concreta de red o de los enlaces del formato de datos (implementación concreta de esas especificaciones) ⇒ reutilización de definiciones abstractas (mensajes y tipos de puertos) 10
  • 11. WSDL WSDL  WSDL separa: la definición de la interfaz del servicio web (interfaz abstracta) de la definición de la implementación (servicio web)  Conceptos:  Mensajes ⇒ Descripciones abstractas de los datos que se están intercambiando  Tipos de puertos ⇒ Colecciones abstractas de operaciones  Puerto ⇒ Un puerto se define por la asociación de una dirección de red y un enlace reutilizable; una colección de puertos define un servicio 11
  • 12. WSDL WSDL  Ventajas del uso de WSDL:  Tener perfectamente definida la interfaz del servicio web ⇒ nombre de la función, parámetros y orden  Facilitar la estructuración de objetos y su construcción (basado en XML)  Reducir el coste de los cambios en los clientes ⇒ permitir actualizaciones casi automáticas y reducir los tiempos entre codificación y explotación  Hacer atractivo el uso de servicios web  Existencia de herramientas que generan automáticamente documentos WSDL 12
  • 13. WSDL WSDL  Desventajas del uso de WSDL:  No hay manera de ver si el proveedor del servicio ha realizado cambios en la interfaz de entrada ⇒ enviar mensajes a los clientes avisando de dichos cambios  Define completamente la semántica de los servicios web? 13
  • 14. WSDL Estructura de un documento WSDL  Especificación WSDL + (parte abstracta + parte concreta)  Parte abstracta ⇒ tipos (estructuras de datos que se intercambian), mensajes, operaciones y tipos de puertos  Parte concreta ⇒ protocolo de transporte (binding), conjunto exacto de puertos que implementa, direcciónes en los que están accesibles y los servicios (agrupaciones lógicas de 14 puertos)
  • 15. WSDL Estructura de un documento WSDL  Tipos ⇒ Estructuras de datos (tipos de datos que usarán los mensajes) que se intercambian  XML Schema tiene tipos básicos pero pertime definir tipos complejos  Mensajes ⇒ Cada mensaje (descripciones abstractas de los datos que se intercambian) es un documento tipado con partes. Cada parte se caracteriza por un nombre y un tipo  Por ejemplo, la invocación de un procedimiento con dos parámetros, un entero y un real ⇒se puede definir como un mensaje con dos partes 15
  • 16. WSDL Estructura de un documento WSDL  Operaciones ⇒ Hay 4 tipos de operaciones (especificación de la interfaz abstracta)  One-way (un sentido) ⇒ El cliente invoca un servicio enviando un único mensaje al servidor, pero no recibe respuesta del servidor (1 mensaje, asíncrono)  Notificacion (notificación) ⇒ El servidor envía un único mensaje al cliente (1 mensaje, asíncrono)  Request-response (petición-respuesta) ⇒ El servidor es invocado por el cliente y responde (2 mensajes, síncrono). Comunicación tipo RPC  Solicit-response (solicitud-respuesta) ⇒ El servidor invoca una petición y espera respuesta del cliente (2 mensajes, síncrono)  Tipos de puerto ⇒ Agrupan operaciones 16
  • 17. WSDL Estructura de un documento WSDL  Binding (InterfaceBinding) ⇒ Especifica la codificación del mensaje y el protocolo de transporte (protocol bindings) para todas las operaciones y mensajes definidos en un tipo de puerto. Por ejemplo  Una operación en estilo RPC  El mensaje de una operación tiene que utilizar SOAP como protocolo de aplicación, y HTTP como protocolo de transporte  Reglas de codificación utilizadas para serializar partes de un mensaje en XML: literal y encoding (RPC, utiliza reglas de codificación SOAP) 17
  • 18. WSDL Estructura de un documento WSDL  Binding (InterfaceBinding) ⇒ Mecanismo de enlace entre la definición abstracta de un servicio web y una implementación específica, utilizando: (1) un protocolo de mensajes, un modelo de codificación de datos y un protocolo de transporte concretos  Puertos (Ports o EndPoints) ⇒ Combinan la información de los Bindings con direcciones de red (especificados por una URI) en la que se puede acceder a la implementación del tipo de puerto 18
  • 19. WSDL Estructura de un documento WSDL  Servicios ⇒ puertos que están implementados como un grupo. Permiten que la misma funcionalidad sea accesible en diferentes estilos de interacción y con diferentes protocolos de transporte  Agrupaciones lógicas de puertos. Un servicio específico WSDL podría estar accesible en diferentes direcciones (URLs de diferentes máquinas)  Un servicio WSDL agrupa puertos relacionados, disponibles con frecuencia en una misma dirección  Otra agrupación posible es utilizar diferentes puertos que representan diferentes bindings del mismo tipo de puerto 19
  • 20. WSDL Estructura de un documento WSDL  Añadiendo InterfaceBindings, Ports y Services ⇒ la definición de la interface se va concretado  Con la información de binding ⇒ los usuarios conocen qué protocolos usar, cómo estructurar los mensajes XML, y qué se espera al enviar el mensaje → WSDL 1.1 define extensiones binding para SOAP, HTTP GET y POST, y MIME  Con la información de port ⇒ el usuario conoce la dirección en la que se implementa un tipo de puerto  Con el service ⇒ el usuario conoce todos los puertos que están implementados como un grupo 20
  • 21. WSDL Descripciones del WSDL  El documento WSDL es descriptivo, y su finalidad es la de ofrecer toda la información posible al programador para poder realizar la codificación del cliente que aceptará el servicio o los servicios descritos en él  Una interfaz tiene la misión de dar a conocer la forma que tendrá un objeto visto desde fuera, conociendo sus “enganches” con el resto del sistema, pero no tiene que dar información de qué o cómo se realizan las operaciones por dentro  Un documento WSDL utiliza los siguientes elementos en la definición de servicios web  types (tipos), message (mensaje), operation (operación) portType (tipo de puerto), binding (enlace), port (puerto) y service (servicio) 21
  • 22. WSDL Descripciones del WSDL  types ⇒ Contenedor de definiciones de tipos de datos que se intercambien en los mensajes, utilizando algún sistema de tipos (XML Schema, XSD)  message ⇒ Descripción abstracta de los datos que se están intercambiando (colecciones de datos)  operation ⇒ Descripción abstracta de una acción admitida por el servicio  portType ⇒ Representación abstracta del servicio web (interfaz real del servicio web), indicando el orden de intercambio de mensajes. Conjunto abstracto de operaciones admitidas por uno o más puertos 22
  • 23. WSDL Descripciones del WSDL  binding ⇒ Definición concreta de los portType. Especificación del protocolo de transporte y del formato de datos para un portType determinado  port ⇒ Punto final único que se define como la combinación de un enlace y una dirección de red. Direcciones implementando el servicio  service ⇒ colección de puntos finales (puertos) relacionados 23
  • 24. WSDL Descripciones del WSDL  Relación entre elementos de un documento WSDL message → colecciones de datos, representaciones abstractas de los datos transmitidos. Cada mensaje conta de varias partes lógicas (part), cada una de las cuales tiene asociado un tipo (type) que debe de estar previamente definido. Cada part indica un parámetro que se transmitirá junto con el mensaje 24
  • 26. WSDL Morfología de un documento WSDL 26
  • 27. WSDL Morfología de un documento WSDL  Archivo XML: <?xml version=“1.0”?>  Elemento raíz ⇒ <wsdl:definitions …>  Atributos de definitios:  name, targetNamespace, xmlns=“http://schemas.xmlsoap.org/defnitions”, y otros namespaces de: SOAP, XML Schema, etc.  Partes del documento WSDL: Preámbulo, Descripción (de la traducción de método a mensaje), Información de mensajes y Localización del servicio 27
  • 28. WSDL Morfología de un documento WSDL WSDL Tipos de datos <wsdl:type/> Preámbulo Mensajes <wsdl:message/> Interfaces <wsdl:portType/> Descripción Implementaciones <wsdl:binding/> Información de mensajes Localizaciones <wsdl:service/> Localización del servicio 28
  • 29. WSDL Morfología de un documento WSDL  Preámbulo  Sirve para introducir el servicio ⇒ indicando los tipos de datos utilizados en las distintas transacciones, presentación de los mensajes que se darán durante las transacciones y la declaración de los namespaces que se van a utilizar  Lenguaje la descripción y especificación de los tipos de datos en el documento ⇒ XML Schema  Vincular la definición de tipos de datos al documento: (1) dentro del preámbulo <wsdl:type …/>, (2) en archivo aparte <wsdl:import …/> 29
  • 30. WSDL Morfología de un documento WSDL  Preámbulo <wsdl:definitions …> <wsdl:import namespace”URI” location=“URI”/> <wsdl:documentation> … </wsdl:documentation> <wsdl:import …/> <wsdl:types> <wsdl:documentation …/> <wsdl:schema …/> </wsdl:types> <wsdl:message name=“nombreFuncion”> <wsdl:documentation …/> <wsdl:part name= “…” element=“…” type“…”/> 30 </wsdl:message>
  • 31. WSDL Morfología de un documento WSDL  Descripción  Sirve para describir de forma abstracta el servicio web. Traducción de método a mensaje  Elemento <wsdl:portType> y debe haber uno por cada servicio que se quiere concretar  Dentro de <wsdl:portType> se definirán las operaciones (interfaces) y tipos de mensajes que se van a utilizar que puede acceder un cliente ⇒ funciones públicas que soporta (<wsdl:operation>)  Las funciones se llaman mediante mensajes y se contestarán también a través de ellos 31
  • 32. WSDL Morfología de un documento WSDL  Descripción  Dentro de cada <wsdl:operation> es necesario definir los mensajes que se darán durante su llamada, y el orden en que se pueden dar (modelo de intercambio de mensajes)  Tipos de mensajes:  input ⇒ mensajes que emite el cliente como entrada al servicio web  output ⇒ mensajes que son emitidos por el servicio web (respuesta a los mensajes input), y contendrán los datos de respuesta fault ⇒ mensajes de condiciones de error 32 
  • 33. WSDL Morfología de un documento WSDL  Descripción <wsdl:portType name=“…”> <wsdl:documentation …/> <wsdl:operation name=“…”> <wsdl:documentation …/> <wsdl:input message=“…”> … </wsdl:input> <wsdl:output message=“…”> … </wsdl:input> <wsdl:fault name=“…” message=“…”> <wsdl:documentation …/> </wsdl:fault> </wsdl:operation> </wsdl:portTypes> <wsdl:serviceType name=“…”> <wsdl:portType name=“…”> </wsdl:serviceType> 33
  • 34. WSDL Morfología de un documento WSDL  Operación unidireccional (one-way) ⇒ Petición → un mensaje de entrada del cliente al servidor sin esperar respuesta <wsdl:input message=“”>  Operación petición/respuesta (request-response) ⇒ Llamada a una función remota (envia petición y devuelve mensaje de respuesta) <wsdl:input message=“”> <wsdl:output message=“”>  Operación solicitud/respuesta (solicit-response) ⇒ El servidor envia un mensaje y el cliente respode <wsdl:output message=“”> <wsdl:input message=“”>  Operación de notificación (notification) ⇒ El servidor envía un mensaje y no recibe ninguna respuesta <wsdl:output message=“”> 34
  • 35. WSDL Morfología de un documento WSDL Modelo de intercambio de mensajes (Op.) ⇒ One-way, Notificacion, Request-response, Solicit-response 35
  • 36. WSDL Morfología de un documento WSDL  Información de mensajes  Sirve para establecer el enlace ente la interfaz abstracta y las características concretas de la implementación (método de transporte, dirección de acceso, ...). <wsdl:binding>  <wsdl:binding> ⇒ define cómo se transmitirán los mensajes y qué protocolo de transporte (SOAP, HTTP, SMTP, …) se utilizará. Además se completa la información del elemento <wsdl:portType> (definción concreta de la interfaz)  Definición más complicada que <wsdl:portType> 36
  • 37. WSDL Morfología de un documento WSDL  Información de mensajes  <soap:binding> ⇒ indica que los mensajes van a ser de tipo SOAP. Define el protocolo de transporte mediante el atributo transport, y el tipo de mensaje SOAP que se va a transmitir mediante el atributo style (rpc y document (transacciones EDI))  <soap:body> ⇒ define qué partes del mensaje se incluirán en el Body del mensaje SOAP, y cómo serán incluidas las partes. El atributo parts (opcional) indica qué partes deben incluirse en el Body de mensaje SOAP, y si no aparece ⇒ se incluirán todas 37
  • 38. WSDL Morfología de un documento WSDL  Información de mensajes  <soap:fault> ⇒ aparece para indicar que que se realice una acción distinta en caso de cualquier tipo de error y especifica el contenido del mensaje que se recibirá en tal caso (especifica los contenidos del elemento detail (además de faultcode, faultstring y faultactor) dentro del elemento Fault en el mensaje SOAP)  <soap:header> y <soap:headerdefault> ⇒ permiten definir cabeceras que serán transmitidas dentro del elemento Header del mensaje SOAP, y aparecerá antes del elemento <soap:body> 38
  • 39. WSDL Morfología de un documento WSDL  Información de mensajes  <soap:operation> ⇒ define el valor del elemento soapAction cuando se utiliza el protocolo HTTP. Y sirve para conocer el tipo de mensaje que se dará mendiante el atributo style  <wsdl:operation> ⇒ dentro de este elemento se detalla la información de las funciones que están disponibles en la interfaz, y el nombre de dichas funciones debe de coincidir con el que se le dio en <wsdl:portType>. Mediante el atributo name se indica el nombre de la función que se definirá  <wsdl:documentation>, <wsdl:input>, <wsdl:output> y <wsdl:fault> ⇔ <wsdl:portType> 39
  • 40. WSDL Morfología de un documento WSDL  Información de mensajes <wsdl:binding name="Hello_Binding" type="tns:Hello_PortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="sayHello"> <soap:operation soapAction="sayHello"/> <wsdl:input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/> </wsdl:input> <wsdl:output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/> </wsdl:output> </wsdl:operation> 40 </wsdl:binding>
  • 41. WSDL Morfología de un documento WSDL  Localización del servicio  <wsdl:service> ⇒ sirve para indicarnos dónde está el servicio web y dónde hay que enviar las peticiones  <wsdl:port> ⇒ Indica el puerto al que se conectará el cliente para realizar las peticiones  <soap:address> ⇒ se utiliza dentro del elemento <wsdl:port> para indicar la URL del acceso al servicio SOAP, indicada en el atributo location  Un servicio web no tiene porque está ligado a una única URL. Diferentes URLs para un mismo servicio → definir varios <wsdl:port> 41
  • 42. WSDL Morfología de un documento WSDL  Localización del servicio <wsdl:service name="Hello_Service"> <wsdl:documentation>WSDL File for HelloService</wsdl:documentation> <wsdl:port binding="tns:Hello_Binding“ name="Hello_Port"> <soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/> </wsdl:port> </wsdl:service> 42
  • 43. WSDL Ejemplo de documento WSDL <?xml version="1.0" encoding="UTF-8"?> <definitions name="HelloService" targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <message name="SayHelloRequest"> <part name="firstName" type="xsd:string"/> </message> <message name="SayHelloResponse"> <part name="greeting" type="xsd:string"/> </message> <portType name="Hello_PortType"> <operation name="sayHello"> <input message="tns:SayHelloRequest"/> <output message="tns:SayHelloResponse"/> </operation> </portType> 43
  • 44. WSDL Ejemplo de documento WSDL <binding name="Hello_Binding" type="tns:Hello_PortType"> <soap:binding style="rpc“ transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="sayHello"> <soap:operation soapAction="sayHello"/> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/> </output> </operation> </binding> <service name="Hello_Service"> <documentation>WSDL File for HelloService</documentation> <port binding="tns:Hello_Binding" name="Hello_Port"> <soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/> </port> </service> </definitions> 44
  • 46. WSDL Ejemplo de documento WSDL a partir de Java  Interfaz en Java public Hotel[] buscarHoteles(String ciudad); public class Hotel { private String nombre; private String ciudad; private String direccion; private String telefono; private String url; public void setNombre(String nombre) { this.nombre = nombre; } public String getNombre() { return nombre; } … … … } 46
  • 47. WSDL Ejemplo de documento WSDL a partir de Java <types> <schema targetNamespace='http://tempuri.org/type‘ xmlns='http://www.w3.org/2001/XMLSchema‘ xmlns:SOAP- ENC='http://schemas.xmlsoap.org/soap/encoding/‘ xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/‘ xmlns:tns='http://tempuri.org/type' elementFormDefault='qualified'> <complexType name='hotel'> <sequence> <element name='nombre' type='xsd:string'/> <element name='ciudad' type='xsd:string'/> <element name='direccion' type='xsd:string'/> <element name='telefono' type='xsd:string'/> <element name='url' type='xsd:string'/> </sequence> </complexType> <complexType name ='ArrayOfHotel'> <complexContent> <restriction base='SOAP-ENC:Array'> <attribute ref='SOAP-ENC:arrayType' wsdl:arrayType='tns:hotel[]'/> </restriction> </complexContent> </complexType> </schema> 47 </types>
  • 48. WSDL Ejemplo de documento WSDL a partir de Java <message name='obtenerHoteles'> <part name='Ciudad' type='xsd:string'/> </message> <message name='obtenerHotelesResponse'> <part name='Result' type='typens:ArrayOfHotel'/> </message> <portType name='ServicioHotelPortType'> <operation name='obtenerHoteles'> <input message='wsdlns:obtenerHoteles'/> <output message='wsdlns:obtenerHotelesResponse'/> </operation> <!- Incluir operaciones adicionales que tuviera el portType --> </portType> 48
  • 49. WSDL Ejemplo de documento WSDL a partir de Java <binding name='ServicioHotelSoapBinding' type='wsdlns:ServicioHotelPortType'> <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/> <operation name='obtenerHoteles'> <soap:operation soapAction='http://tempuri.org/action/ServicioHotel.obtenerHoteles'/> <input> <soap:body use='encoded' namespace='http://tempuri.org/message/‘ encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> </input> <output> <soap:body use='encoded‘ namespace='http://tempuri.org/message/‘ encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> </output> </operation> <!- Aquí se podrían poner más operaciones –-> </binding> <service name='servicioH' > <port name='ServicioHotelSoapPort' binding='wsdlns:ServicioHotelSoapBinding'> <soap:address location='http://155.54.15.121/servicioH/servicioH2.ASP' /> </port> <!- Aquí podríamos poner ports adicionales --> </service> 49
  • 50. WSDL Ejemplo de documento WSDL a partir de Java Definición completa del servicio web ⇒ Definición de tipos, mensajes, portTypes, binding y service 50
  • 51. WSDL Ejemplo de documento WSDL a partir de Java <?xml version='1.0' encoding='UTF-8' ?> <definitions name ='servicioH' targetNamespace = 'http://tempuri.org/wsdl/‘ xmlns:wsdlns='http://tempuri.org/wsdl/‘ xmlns:typens='http://tempuri.org/type‘ xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/‘ xmlns:xsd='http://www.w3.org/2001/XMLSchema‘ xmlns='http://schemas.xmlsoap.org/wsdl/'> <documentation> Este servicio web busca hoteles en una ciudad específica </documentation> <types> … </types> <message> … </message> <portType> … </portType> <binding> … </binding> <service> … </service> </definitions> 51
  • 52. WSDL Protocolos en WSDL  Según la especificación, WSDL puede usarse con cualquier protocolo de transporte y de formato de mensajes. La especificación WSDL sólo define bindings para tres protocolos: SOAP, HTTP GET/POST y MIME  El binding SOAP y el binding HTTP definen el modo de transporte, el modo de invocación y la codificación. Sin embargo, el binding MIME sólo define el modo de codificación y ha de combinarse con alguno de los anteriores para concretar el modo de transporte e invocación 52
  • 53. WSDL Protocolos en WSDL. Binding SOAP  El binding SOAP para WSDL proporciona una manera de indicar:  Que los mensajes van a ser de tipo SOAP  La cabecera SOAPAction que hay que usar en los mensajes si el transporte es HTTP  El resto de cabeceras que haya que usar en los mensajes  La dirección a la que se deben enviar los mensajes  Los elementos de un binding no forman parte del espacio de nombres de WSDL. El binding SOAP está definido en http://schemas.xmlsoap.org/wsdl/soap/53
  • 54. WSDL Protocolos en WSDL. Binding SOAP  Elementos del binding SOAP  <soap:binding>, <soap:body>, <soap:fault>, <soap:header>, <soap:headerdefault>, <soap:operation>, <soap:address> <binding name="TemperaturaActualBindingSoap" type="tns:TemperaturaActualPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetTemperaturaActual"> <soap:operation soapAction="http://example.com/GetTemperaturaActual"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"> </output> </operation> 54 </binding>
  • 55. WSDL Protocolos en WSDL. Binding HTTP GET/POST  El binding define tres maneras diferentes en enlazar un mensaje con una dirección HTTP:  HTTP GET con codificación de la URL  HTTP GET con sustitución de URL  HTTP POST  Estos métodos permiten que un servicio sea usado por un navegador HTTP estándar ⇒ lo que haría al servicio accesible a una gran variedad de clientes (navegadores, PDAs, teléfonos móviles, etc.) <binding name="postBinding" type="addPortType"> <http:binding verb="POST"/> <operation name="add"> <http:operation location="o1"/> <input> … </input> … <output> … </output> … </operation> 55 </binding>
  • 56. WSDL Protocolos en WSDL. Binding MIME  Hay enlaces definidos para los tipos multipart / related y text / xml. Los demás tipos MIME también se pueden representar usando el elemento mime:content. También es posible usar tipos MIME junto con SOAP para enlazar partes diferentes del mismo mensaje.  Los enlaces de datos MIME se pueden usar dentro de las secciones input o output del elemento binding <binding ...> <operation ...> <input> <--Elementos mime--> </input> <output> <--Elementos mime--> </output> </operation> 56 </binding>
  • 57. WSDL Implicaciones del modelo WSDL  Los diferentes tipos de interacción ⇒ Suponen que un servidor puede invocar servicios (se comporta como un cliente)  La ventaja de la separación de la parte abstracta y concreta, es que la primera puede reutilizarse ⇒ Un WDSL puede importar otro WDSL <import …>. Por ejemplo, un documento WSDl puede importar la parte abstracta y concretar los “bindings” y las “direcciones”  Si los mensajes definido en WSDL se intercambian en SOAP, entonces el InterfaceBinding contiene toda la información necesaria para construir automáticamente los mensajes SOAP 57
  • 58. WSDL Utilización de WSDL (según W3C)  Lenguaje de descripción de servicio tradicional (contrato que implementa un Servicio Web) ⇒ El contrato indica cómo interactuar con el servicio, datos a enviar y devolver, operaciones involucradas y el formato y protocolo  Entrada para compiladores de stub y otras herramientas ⇒ Los servidores de aplicaciones dan facilidades para generar stubs de documento WSDL y para generar WSDL de clases (p.e. clases java)  Uso no definido claramente por el W3C en referencia a la semántica ⇒ Uso de WSDL para capturar la información que permitirá a los diseñadores razonar sobre la semántica de los servicios 58
  • 59. WSDL Utilización de WSDL (según W3C) 59
  • 60. WSDL Conclusiones sobre WSDL  WSDL permite describir servicios web de manera formal  WSDL permite definir la interfaz del servicio, cómo se enlazará a uno o varios protocolos de transporte, y los tipos de datos que utiliza  WSDL permite definir el método de transporte y de invocación, y también especificar la dirección de acceso al servicio  WSDL es muy flexible ⇒ no limita su uso a una codificación, ni a un protocolo de transporte, ni a un modelo de invocación concretos 60
  • 61. WSDL Conclusiones sobre WSDL  Los enlaces concretos como SOAP, HTTP y MIME son simplemente extensiones de WSDL, y se pueden definir otros enlaces para cualquier protocolo  Existen herramientas para poder crear un proxy de cliente o un esqueleto (skeleton) de un servicio de forma automática a partir de un documento WSDL ⇒ Lo único necesario para acceder a un servicio = definición en WSDL  WSDL es equivalente a los IDLs ⇒ Servicios Web son más complejos de describir 61