• Save
Tema 3 1
Upcoming SlideShare
Loading in...5
×
 

Tema 3 1

on

  • 1,772 views

 

Statistics

Views

Total Views
1,772
Views on SlideShare
1,770
Embed Views
2

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 2

http://localhost 1
http://www.ieei.ual.es:81 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Tema 3 1 Tema 3 1 Presentation Transcript

  • Servicios Web Programación de Red. Ingeniería en Informática
  • Servicios WebObjetivos: 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
  • SOAPObjetivos 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
  • WSDLWSDL 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
  • WSDLWSDL 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
  • WSDLEsquema WSDL 9
  • WSDLWSDL  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
  • WSDLWSDL 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
  • WSDLWSDL 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
  • WSDLWSDL 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
  • WSDLEstructura 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)
  • WSDLEstructura 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
  • WSDLEstructura 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
  • WSDLEstructura 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
  • WSDLEstructura 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
  • WSDLEstructura 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
  • WSDLEstructura 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
  • WSDLDescripciones 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
  • WSDLDescripciones 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
  • WSDLDescripciones 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
  • WSDLDescripciones 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
  • WSDLEjemplo de documento WSDL 25
  • WSDLMorfología de un documento WSDL 26
  • WSDLMorfologí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
  • WSDLMorfologí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
  • WSDLMorfologí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
  • WSDLMorfologí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>
  • WSDLMorfologí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
  • WSDLMorfologí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 
  • WSDLMorfologí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
  • WSDLMorfologí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
  • WSDLMorfología de un documento WSDL Modelo de intercambio de mensajes (Op.) ⇒ One-way, Notificacion, Request-response, Solicit-response 35
  • WSDLMorfologí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
  • WSDLMorfologí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
  • WSDLMorfologí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
  • WSDLMorfologí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
  • WSDLMorfologí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>
  • WSDLMorfologí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
  • WSDLMorfologí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
  • WSDLEjemplo 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
  • WSDLEjemplo 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
  • WSDLEjemplo de documento WSDL 45
  • WSDLEjemplo 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
  • WSDLEjemplo 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>
  • WSDLEjemplo 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
  • WSDLEjemplo 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
  • WSDLEjemplo de documento WSDL a partir de Java Definición completa del servicio web ⇒ Definición de tipos, mensajes, portTypes, binding y service 50
  • WSDLEjemplo 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
  • WSDLProtocolos 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
  • WSDLProtocolos 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
  • WSDLProtocolos 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>
  • WSDLProtocolos 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>
  • WSDLProtocolos 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>
  • WSDLImplicaciones 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
  • WSDLUtilizació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
  • WSDLUtilización de WSDL (según W3C) 59
  • WSDLConclusiones 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
  • WSDLConclusiones 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