Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types...

53
Servicios Web. Mario Muñoz Organero Departamento de Ingeniería Telemática http://www.it.uc3m.es/mario Servidores de información 2 Mario Muñoz Organero. Panorámica de la asignatura RED Comunicaciones Servidores información Intercambio de datos Clientes

Transcript of Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types...

Page 1: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servicios Web.

Mario Muñoz Organero

Departamento de Ingeniería Telemáticahttp://www.it.uc3m.es/mario

Servidores de información 2Mario Muñoz Organero.

Panorámica de la asignatura

RED Comunicaciones

Servidores información

Intercambio de datos

Clientes

Page 2: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 3Mario Muñoz Organero.

Panorámica

ServiceSoap/http request

Soap/httpresponse

Port 1

Cliente

Port 2

Http get request

Http response

Servidores de información 4Mario Muñoz Organero.

¿Qué son los servicios Web?

Los servicios Web son un mecanismo de comunicación distribuida que permiten que las aplicaciones compartan información y que además invoquen funciones de otras aplicaciones independientemente de cómo se hayan creado las aplicaciones, cuál sea el sistema operativo o la plataforma en que se ejecutan y cuáles los dispositivos utilizados para obtener acceso a ellas.

Page 3: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 5Mario Muñoz Organero.

¿Qué son los servicios Web?

Los servicios Web son un sistema Software diseñado para soportar la interacción máquina a máquina sobre la red. Definen un formato procesable por ordenador de la descripción de las interfaces (WSDL). La interacción se realiza mediante el intercambio de mensajes a través de la red usando formatos y protocolos como SOAP, HTTP o MIME.

Servidores de información 6Mario Muñoz Organero.

¿Qué son los servicios Web?

Componentes que ejecutan procesos o funciones de negocio significativas.

con una interfaz claramente definida y accesible a través de Internet.

basada en el intercambio de documentos electrónicos en formato XML.

y que pueden ser combinados entre sí.

Page 4: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 7Mario Muñoz Organero.

Enfoque

ServiciosWeb

DCOM, CORBA, RMI

Empresa AEmpresa A

Empresa BEmpresa B

DCOM, CORBA, RMI

Servidores de información 8Mario Muñoz Organero.

Enfoque

Servicio

Servicio

Servicio

Servicio

WEB

XML

XML

XML

XML

XML

XML

Page 5: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 9Mario Muñoz Organero.

Partes de la arquitectura

Descripción de los servicios: WSDL

Registro y búsqueda de servicios: UDDI

Uso de los servicios: SOAP, HTTP, MIME

Comunicaciones: Internet

Formato universal de datos: XML

Bits a transmitir: Interacciones de servicio: SOAP

Descripcion: Descripciones formales: WSDL

Directorio: Publicar & encontrar Servicios: UDDI

Servidores de información 10Mario Muñoz Organero.

Partes de la arquitecturaRegistro UDDI

Enlaces a servicios

Proveedor de servicio Consumidor del servicioMensajes SOAP

Publicación Búsqueda

Page 6: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

WSDL - Panorámica

Web Service Description Language

Servidores de información 12Mario Muñoz Organero.

¿Qué es WSDL?

WSDL es una especificación definiendo cómo describir servicios web usando una gramática XML. Describe cuatro piezas principales:

Información sobre la interfaz exportada. Tipos de datos de los mensajes intercambiados (peticiones, respuestas, errores). Información de “binding” definiendo cómo transportar los mensajes en la comunicación. Direcciones para localizar los servicios.

Se puede decir que WSDL representa un contrato entre el proveedor y el usuario de un servicio de la misma manera que unainterfaz Java representa un contrato entre un código cliente y el objeto actual Java.

Page 7: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 13Mario Muñoz Organero.

¿Qué es WSDL?

Es una gramática XML, orientada a describir en forma estructurada, la funcionalidad de un Web Service y la forma en que esa funcionalidad se hace disponible. Describe un servicio, como una colección de “comunication endpoints”(puertos) capaces de intercambiar mensajes.Cada port tiene un definición abstracta (port type) y una definición concreta (binding).Permite describir en forma abstracta operaciones y mensajes, prescindiendo de las especificaciones de protocolo y tipos de datos.Vincula las descripciones abstractas a una implementación concreta de protocolos y tipos de datos, permitiendo la reutilización de las definiciones abstractas.Es extensible tanto en lo que respecta a tipos de datos (XSD) como a protocolos y formatos de mensajes.Provee documentación sobre el servicio que describe

Servidores de información 14Mario Muñoz Organero.

Componentes de un servicio

definitions = elemento raíz del documento WSDL. Se usa para declarar los espacios de nombres.types = se usa para describir tipos de datos para los mensajes intercambiados. message = descripción de los datos que van a ser transmitidos. Son una colección de “data values” de un tipo particular (utilizando XML Schema como mecanismo de tipación).portType = Colección de “operations” o “signatures” de los métodos que definen el intercambio ordenado de los mensajes.bindings = especifica los protocolos usa cada “port” y el “encoding”.port = “Port type” + “Binding”. Es un descripción de una acción soportada por el servicio. Cada operación se corresponde a un mensaje de input o de outputservice = Conjunto de “ports” relacionados que implementan el servicio.

Page 8: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 15Mario Muñoz Organero.

Componentes de un servicio

Servidores de información 16Mario Muñoz Organero.

Componentes de un servicio

Page 9: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 17Mario Muñoz Organero.

Otros componentes

documentationSe usa para añadir comentarios en lenguaje humano a las definiciones.

importImporta otros documentos dentro del actual incorporando otro espacio de nombres.

includeIgual que import pero con el mismo espacio de nombres.

Servidores de información 18Mario Muñoz Organero.

Ejemplo - 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>

Page 10: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 19Mario Muñoz Organero.

Ejemplo - WSDL

<portType name="Hello_PortType">

<operation name="sayHello">

<input message="tns:SayHelloRequest"/>

<output message="tns:SayHelloResponse"/>

</operation>

</portType>

Servidores de información 20Mario Muñoz Organero.

Ejemplo - 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>

Page 11: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 21Mario Muñoz Organero.

Ejemplo - WSDL

<service name="Hello_Service"> <documentation>

WSDL File for HelloService</documentation> <port binding="tns:Hello_Binding" name="Hello_Port">

<soap:addresslocation="http://localhost:8080/soap/servlet/rpcrouter"/>

</port> </service>

</definitions>

Servidores de información 22Mario Muñoz Organero.

Mensaje de invocación

Page 12: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 23Mario Muñoz Organero.

Mensaje de respuesta

SOAP

Simple Object Access Protocol

Page 13: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 25Mario Muñoz Organero.

¿Qué es SOAP?

SOAP es una aplicación de la especificación XML.

SOAP = XML messaging.

El transporte de SOAP puede ser HTTP, FTP, TCP, SMTP, POP3, MQSeries,etc

SOAP 1.0 (1999), 1.1 (2000), 1.2 (2002)

Servidores de información 26Mario Muñoz Organero.

Estructura de un mensaje SOAP

El SOAP Header es opcional.

El SOAP Body contiene el mensaje en cuestión a ser procesado.

Page 14: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 27Mario Muñoz Organero.

El “sobre”

SOAP Envelopes: están hechos para llevar documentos XML arbitrarios, sin importar si es un objeto como una factura o una invocación RPC que codifica sus parámetros con “encodingrules” o no. El uso de “encoding styles” es totalmente opcional.Codificación de datos que no sean string de texto como estructurados, arrays y otros tipos compuestos se hace en base64

Servidores de información 28Mario Muñoz Organero.

El SOAP Header

No tiene por qué ir asociado a la aplicación.Usos típicos son: identificadores, información de seguridad como certificados…SOAP proporciona un mecanismo para especificar quién debe tratar las cabeceras y qué hacer con ellas. Para ello incluye:

Atributo SOAP actor: quién debe procesar una cabecera: none, next, ultimateReceiver. Atributo mustUnderstand: con valores 1 o 0, indicando si el procesamiento de la cabecera es o no obligatorio. SOAP 1.2 añade un atributo relay (reenviar la cabecera si no se procesa)

Page 15: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 29Mario Muñoz Organero.

El SOAP Body

Para información específica de la aplicación.

Las entradas en el body son extremo a extremo y deben ser entendidas por el receptor.

El cuerpo del mensaje puede contener contenido de invocación, respuesta, notificación o error (fault)

Servidores de información 30Mario Muñoz Organero.

Usos de SOAP

RPC: envío de parámetros y recepción de resultados.

EDI: envío de y recepción de facturas, ejemplo: info financiera

Page 16: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 31Mario Muñoz Organero.

RPC – ejemplo petición

En general viene de a pares (solicitud y respuesta), pero no siempre tiene que haber una respuesta.

<s: Envelope xmlns:s=http://www.w3.org/2001/06/soap-envelope><s:Header>

<m:transaction xmlns:m=“soap-transaction”s:mustUnderstand=“true”/>

</s:Header><s:Body>

<n:getQuote xmlns:n=urn:QuoteService”><symbol xsi:type=“xsd:string”>

IBM</symbol>

</n:getQuote></s:Body>

</s:Envelope>

Servidores de información 32Mario Muñoz Organero.

RPC – ejemplo respuesta

<s:Envelope xmlns:s=http://www.w3.org/2001/06/soap-envelope><s:Body>

<n:getQuoteResponse xmlns:n=“urn:QuoteService”><value xsi:type=“xsd:float”>

98.06</value>

</n:getQuoteResponse></s:Body>

</s:Envelope>

Page 17: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 33Mario Muñoz Organero.

Estilos de codificación

Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común .SOAP define más un método de codificación para convertir los datos de un objeto software a formato XML y viceversa.Para especificar el tipo de codificación se utiliza el atributo encodingStyle en el elemento getQuote del ejemplo:

<s:Envelope xmlns:s=http://www.w3.org/2001/06/soap-envelope><s:Body>

<n:getQuote xmlns:n:”urn:QuoteService”s:encodingStyle=http://www.w3.org/2001/06/soap-encoding>

<symbol xsi:type=“xsd:string”>IBM</symbol></n:getQuote>

</s:Body></s:Envelope>

Servidores de información 34Mario Muñoz Organero.

Estilos de codificación

3 de los “encoding styles” de SOAP se hanpopularizado:

SOAP Remote Procedure Call (RPC) encoding,

SOAP Remote Procedure Call Literal encoding (SOAP RPC-literal),

SOAP document-style encoding

Page 18: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 35Mario Muñoz Organero.

Invocaciones estilo RPC

La invocación es representada en una sola estructura con sus parámetros in o in-out.

Los nombres y el orden físico de los parámetros debe coincidir con el de los parámetros del método que invocó.

Servidores de información 36Mario Muñoz Organero.

Ejemplo - invocación

String checkStatus(String orderCode, String customerID);

<s:Envelope xmlns:s=“….”><s:Body>

<checkStatus xmlns=“….”s:encodingStyle=http://www.w3.org/2001/06/soap-encoding>”<orderCode xsi:type=“string”>abc123</orderCode><customerID xsi:type=“string”>Bob’s store</customerID>

</checkStatus></s:Body>

</s:Envelope>

Page 19: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 37Mario Muñoz Organero.

Ejemplo - Respuesta

<s:Envelope xmlns:s=“…”>

<s:Body>

<checkStatusResponse s:encodingStyle=“http:// ….”>

<return xsi:type=“xsd:string”>new</return>

</checkStatusResponse>

</SOAP:Body>

</SOAP:Envelope>

Servidores de información 38Mario Muñoz Organero.

Tipos de datos

SOAP define 3 formas distintas de expresar los tipos de datos de un tag:Utilizar el atributo xsi:type en cada tag, explicitamente referenciando el tipo de datos de acuerdo con la especificación del XML Schema.

<person><name xsi:type=“xsd:string”>John Doe</name>

</person>

Referenciar un XML Schema que define particularmente ese tipo de datos exacto.

<person xmlns=“personschema.xsd”><name>John Doe</name>

</person> <!-- en personschema.xsd se define el elemento como type=xsd:string -->

Referenciar otro tipo de documento schema que defina el tipo de datos de un tipo de elemento dentro del cual se declara.

<person xmlns=“urn:some_namespace”><name>John Doe</name>

</person><!-- urn:namespace indica en el cual los valores de los elementos son strings -->

Page 20: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 39Mario Muñoz Organero.

SOAP Faults

Siempre en el Body

Fault codes extensiblesNo correspondencias de versiones

Problemas reconociendo headers o data encodings

Problemas genéricos en emisor o receptor

Causas de fallo en texto legible

Servidores de información 40Mario Muñoz Organero.

SOAP Faults

Emplazarlos en el cuerpo del mensaje SOAP (env:Body elements)Dentro del Body en elemento env:FaultSubelementos:

env:Node identifica al nodo que genera el falloLa ausencia implica “ultimo receptor”

env:Codeenv:Valueenv:Subcode

env:Reasonenv:Text

env:DetailEspecífico de la aplicación

Page 21: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 41Mario Muñoz Organero.

Ejemplo - SOAP Faults

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"xmlns:xml="http://www.w3.org/XML/1998/namespace">

<env:Body xmlns:m="http://www.example.org/timeouts"><env:Fault><env:Code><env:Value>env:Sender</env:Value><env:Subcode><env:Value>m:MessageTimeout</env:Value>

</env:Subcode></env:Code><env:Reason><env:Text xml:lang="en">Sender Timeout</env:Text>

</env:Reason><env:Detail><m:MaxTime>P5M</m:MaxTime></env:Detail>

</env:Fault></env:Body>

</env:Envelope>

WSDL - Detalles

Versión 1.1

Page 22: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 43Mario Muñoz Organero.

Espacios de nombres

Prefijo URI del espacio de nombres definiciónwsdl http://schemas.xmlsoap.org/wsdl/ WSDL namespace for WSDL

framework.soap http://schemas.xmlsoap.org/wsdl/soap/ WSDL namespace for WSDL SOAP

binding.http http://schemas.xmlsoap.org/wsdl/http/ WSDL namespace for WSDL HTTP

GET & POST binding.Mime http://schemas.xmlsoap.org/wsdl/mime/ WSDL namespace for WSDL MIME

binding.soapenc http://schemas.xmlsoap.org/soap/encoding/ Encoding namespace as defined by

SOAP 1.1 Soapenv http://schemas.xmlsoap.org/soap/envelope/ Envelope namespace as defined by

SOAP 1.1 Xsi http://www.w3.org/2000/10/XMLSchema-instance Instance namespace as defined by

XSD Xsd http://www.w3.org/2000/10/XMLSchema Schema namespace as defined by

XSDTns (various) El “this namespase” (tns) se usa como

convención para referirse al documento corriente.

Servidores de información 44Mario Muñoz Organero.

Page 23: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 45Mario Muñoz Organero.

Servidores de información 46Mario Muñoz Organero.

definitions

Atributos:Un nombre local para las definicionesEl nombre para el espacio de nombres "http://www.w3.org/2004/08/wsdl".Los siguientes atributos:

targetNamespace – requerido Otros espacios de nombres distintos a "http://www.w3.org/2004/08/wsdl".

Elementos hijos:importtypesmessageportTypebindingportservice

Page 24: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 47Mario Muñoz Organero.

import

Servidores de información 48Mario Muñoz Organero.

types

Definiciones de tipos de datos que son relevantes para el intercambio de mensajes.

Se usa XSD (interoperabilidad).

Page 25: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 49Mario Muñoz Organero.

messages

Cada mensaje tiene partes.

Cada parte tiene nombre y tipo.

Servidores de información 50Mario Muñoz Organero.

Ejemplo

Page 26: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 51Mario Muñoz Organero.

portType

Conjunto de operaciones.

Cada tipo de puerto tiene su nombre.

Servidores de información 52Mario Muñoz Organero.

operations

Cada una de las funciones que se pueden invocar en un puerto.

Cuatro tipos:One-way. Se recibe un mensaje.

Request-response. Se recibe un mensaje y se contesta.

Solicit-response. Se manda un mensaje y se espera la respuesta.

Notification. Se envía un mensaje para el que no se esperarespuesta.

Page 27: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 53Mario Muñoz Organero.

operations

Servidores de información 54Mario Muñoz Organero.

operations

Page 28: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 55Mario Muñoz Organero.

bindings

Servidores de información 56Mario Muñoz Organero.

bindings

Se les pone un nombre.El tipo hace referencia al portType.Los campos de extensibilidad recogenelementos que especifican la gramáticaconcreta para los mensajes de entrada, salida y error (3), (4) y (5).Se puede especificar opcionalmente informaciónde binding para toda una operación (2) así comopara todo el elemento de binding (1).

Page 29: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 57Mario Muñoz Organero.

Ejemplo – SOAP sobre HTTP

Servidores de información 58Mario Muñoz Organero.

Ejemplo – SOAP sobre SMTP (preparativos…)

Page 30: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 59Mario Muñoz Organero.

Ejemplo – SOAP sobre SMTP

Servidores de información 60Mario Muñoz Organero.

Page 31: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 61Mario Muñoz Organero.

Otros binding

A parte de SOAP tenemos:MIME

HTTP GET/POST

Servidores de información 62Mario Muñoz Organero.

ports

Se definen dentro de los servicios

Tienen nombres y se asocian a un binding

Indican la dirección dónde se invocan

Page 32: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 63Mario Muñoz Organero.

services

Tienen nombre

Agrupan un serie de puertos

WSDL 2.0

Page 33: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 65Mario Muñoz Organero.

Definitions

Atributos:Un nombre local para las definicionesEl nombre para el espacio de nombres "http://www.w3.org/2004/08/wsdl".Los siguientes atributos:

targetNamespace – requerido Atributo wsdlLocationOtros espacios de nombres distintos a "http://www.w3.org/2004/08/wsdl".

Elementos hijos:documentation - opcionalCero o más de entre los siguientes:

Importinclude

Types - opcionalCero o más de entre los siguientes:

Elementos de tipo interfaceElementos de tipo bindingElementos de tipo service

Application/wsdl+xml media type

Servidores de información 66Mario Muñoz Organero.

interface

Es el sustituto de los portsAhora un servicio tendrá una sola interfazCada interfaz podrá tener varias operacionesSe permite la herencia mediante la extensión de otros interfacesSe definen tanto Operations como Faults

Page 34: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 67Mario Muñoz Organero.

interface

OperationsEs obligatorio indicar el MEP (Message Exchange Patterns)

Input/output messages, faults

Se pueden referenciar a elementos XML

FaultsUsados por las operations

Se pueden referenciar a elementos XML

Servidores de información 68Mario Muñoz Organero.

Interface: herencia

Page 35: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 69Mario Muñoz Organero.

MEPs

Message Exchange PatternsModelan los intercambios típicos de mensajes entre nodosDesde el punto de vista del servidorEspecifican secuenciamiento, dirección y cardinalidad

Nuevo en WSDL 2.0:Extensible (en WSDL 1.1 era fijo)Cualquier número de nodos (2 en WSDL 1.1)(El número de MEPs no finalizado aún)

Ejemplo:<operation

name="getQuantityInStock"mep="http://www.w3.org/2003/wsdl/pattern/in-out">

<input messageRef="getQuantityInStockRequest"/><output messageRef="getQuantityInStockResponse"/>

</operation>

Servidores de información 70Mario Muñoz Organero.

MEPs

Page 36: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 71Mario Muñoz Organero.

fault

Servidores de información 72Mario Muñoz Organero.

operation

Page 37: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 73Mario Muñoz Organero.

operation

Servidores de información 74Mario Muñoz Organero.

operation

Page 38: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 75Mario Muñoz Organero.

Ejemplo

<interface name=“BankAccount”><operation name=“deposit”

pattern=“http://www.w3.org/2004/08/wsdl/in-out”><input element=“Deposit”/><output element=“Balance”/><outfault ref=“InvalidBankAccount”/>

</operation><operation name=“balance” safe=“true”

pattern=“http://www.w3.org/2004/08/wsdl/in-out”><input element=“BalanceRequest”/><output element=“Balance”/><outfault ref=“InvalidBankAccount”/>

</operation><fault name=“InvalidBankAccount”

element=“InvalidAccountInfo” /></interface>

Servidores de información 76Mario Muñoz Organero.

features y properties

Page 39: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 77Mario Muñoz Organero.

features

Feature componentRepresentación WSDL de las features de SOAP 1.2Pero más generales: no se limita a SOAP 1.2Describen carácterísticas aceptadas o usadas por operaciones. Se nombran por una URI

Nuevas en WSDL 2.0Ejemplo

<featureuri="http://example.com/correlation"required="true"/>

Servidores de información 78Mario Muñoz Organero.

properties

Property:Especifica valores soportados por una propiedad de una featureSe pueden compartir entre diferentes features

Nuevas en WSDL 2.0Ejemplo 1

<property uri="http://example.com/trafficLight/colour"><value>green</value>

</property>Ejemplo 2

<xs:simpleType name="RedAndGreen"><xs:restriction base="xs:string">

<xs:enumeration value="red"/><xs:enumeration value="green"/>

</xs:restriction></xs:simpleType>…<property uri="http://example.com/trafficLight/colour">

<constraint>RedAndGreen</constraint></property>

Page 40: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 79Mario Muñoz Organero.

binding

Detalles para el intercambio de mensajes por la redTipo explícitoEspecifica los parámetros del protocolo

Servidores de información 80Mario Muñoz Organero.

Binding - fault

Page 41: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 81Mario Muñoz Organero.

Binding - operation

Servidores de información 82Mario Muñoz Organero.

Binding – operation – input/output

Page 42: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 83Mario Muñoz Organero.

Ejemplo

<binding name=“SecureBank" interface=“BankAccount"type="http://www.w3.org/2004/08/wsdl/soap12"wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/“>

<operation ref=“balance" wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response/">

</operation>

<fault ref=“InvalidBankAccount"wsoap:code=“soap:Sender">

</fault>

<feature uri="http://example.com/secure-channel"required="true"/>

</binding>

Servidores de información 84Mario Muñoz Organero.

service

Page 43: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 85Mario Muñoz Organero.

Service - endpoint

Servidores de información 86Mario Muñoz Organero.

Ejemplo

<service name=“HypoTirol”

interface=“BankAccount”>

<endpoint name=“secure”

binding=“SecureAccount”

address=“https://ht.at/account” />

</service>

Page 44: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 87Mario Muñoz Organero.

Trabajos actuales

WS-Addressing

WS-Policy

Servidores de información 88Mario Muñoz Organero.

WS-Addressing -Ejemplo

To – DestinatarioFrom, ReplyTo, FaultTo – canal de retornoMessageID, RelatesTo – correlación simpleAction – La semantica que asume el mensaje

<S:Envelope><S:Header>

<wsa:MessageID>uuid:aaaabbbb-cccc-dddd-eeee-ffffffffffff</wsa:MessageID><wsa:ReplyTo><wsa:Address>http://example.com/client1</wsa:Address></wsa:ReplyTo><wsa:To>mailto:[email protected]</wsa:To><wsa:Action>http://example.com/mail/Delete</wsa:Action>

</S:Header><S:Body><ex:Delete><maxCount>42</maxCount></ex:Delete>

</S:Body></S:Envelope>

Page 45: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

UDDI

Universal Description, Discovery and Integration

Servidores de información 90Mario Muñoz Organero.

Arquitectura

UDDI

SERVICIO

CLIENTE

WSDLWSDL

SOAP/HTTP...

3. CONSUMO DEL SERVICIO

Page 46: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 91Mario Muñoz Organero.

UDDI

Implementa la funcionalidad de “discovery”necesaria para poder encontrar la descripción WSDL del WebService que se necesita.

UDDI tiene 2 partes:Un directorio con los metadatos de todos los WebServices, incluyendo un puntero a la descripción WSDL de cada uno.

Las definiciones de “port types” WSDL para manipular y buscar en ese directorio.

Servidores de información 92Mario Muñoz Organero.

UDDI

Define estándares para un registro distribuido de servicios Web:

White pages (información general)

Yellow pages (categorías de servicios)

Green pages (reglas de negocio)

Page 47: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 93Mario Muñoz Organero.

Páginas blancas

Información sobre un proveedor de servicios: Nombre

Descripción en texto del proveedor

Información de contactoTeléfono

Dirección postal

Otros nombres (ticket para el IBEX-35…).

Servidores de información 94Mario Muñoz Organero.

Páginas amarillas

Categorías de negocios.

En UDDI V1 se definen 3 taxonomías:NAICS (North American industry codes)

UN/SPSC (ECMA product/services codes)

Geographical information

Estas se extienden en UDDI V2.

Page 48: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 95Mario Muñoz Organero.

Páginas verdes

Se describe la “chicha” de cómo interactuar con alguien:

Entidades de negocioDescripciones de serviciosInformación de binding

Este directorio o registro es definido como una jerarquía de entidades “business”, “service” y “binding” cuyas descripciones son expresadas en XML.

Servidores de información 96Mario Muñoz Organero.

Business Entity

Provee información de quien desarrolló el WebService: la compañía, información de contacto en la misma, categorías de la industria, identificador de negocios y la lista de los servicios provistos

A continuación presentamos un ejemplo ...

Page 49: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 97Mario Muñoz Organero.

<businessEntity businessKey="uuid:11111111-2222-3333-4444-555555555555"operator="http://www.ibm.com"authorizedName="John Doe">

<name>Acme Company</name><description>

We create cool WebServices</description><contacts>

<contact useType="general info"><description>General Information</description><personName>John Doe</personName><phone>(123) 123-1234</phone><email>[email protected]</email>

</contact></contacts><businessServices>

...</businessServices><identifierBag>

<keyedReference ModelKey="UUID:11111111-2222-3333-4444-555555555556"name="D-U-N-S"value="123456789" />

</identifierBag><categoryBag>

<keyedReference ModelKey="UUID:11111111-2222-3333-4444-555555555557"name="NAICS"value="111336" />

</categoryBag><businessEntity>

Servidores de información 98Mario Muñoz Organero.

Business Services

Representa un único WebService provisto por la “Business Entity”.

La descripción incluye: tipo de WebService y a que categorías pertenece.

La forma de identificar todas las “businessentities” y los “business services” en UDDI es a través del UUID (“universally unique identifiers”).

Page 50: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 99Mario Muñoz Organero.

<businessService serviceKey=“uuid:11111111-2222-4444-5555-666666666666”businessKey=“uuid:11111111-2222-4444-5555-666666666667”>

<name>Hello World WebServices</name><description>A friendly WebService</description><bindingTemplates>

….</bindingTemplates><categoryBag />

</businessService>

Ejemplo de Business Service

Servidores de información 100Mario Muñoz Organero.

Binding Templates

Son la descripción técnica de los WebServicesrepresentados por la estructura “business service”.Representan la implementación del WebService.Basicamente equivalen a el elemento “service” descriptoen WSDL.Como un mismo servicio puede estar implementado de diferentes formas y puede ser asociado a múltiples protocolos o diferentes direcciones, puede haber varios binding templates para un mismo WebServiceVeamos un ejemplo a continuación …

Page 51: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 101Mario Muñoz Organero.

<bindingTemplate serviceKey=“uuid:11111111-2222-4444-5555-666666666666”

businessKey=“uuid:11111111-2222-4444-5555-666666666667”>

<description>Hello World SOAP Binding</description>

<accessPoint URLType="http">

http://localhost:8080

<accessPoint>

<TModelInstanceDetails>

<TModelInstanceInfo TModelKey=“uuid:11111111-2222-4444-5555-666666666668”>

<instanceDetails>

<overviewDoc>

<description>

references the description of the WSDL service definition

</description>

<overviewURL>

http://localhost/helloworld.wsdl

</overviewURL>

</overviewDoc>

</instanceDetails>

</TModelInstanceInfo>

</TModelInstanceDetails>

</bindingTemplate>

Servidores de información 102Mario Muñoz Organero.

TModels

Es una forma de describir varias estructuras “business + service + template” dentro del directorio UDDI.Sirven para representar los nuevos “port types”dentro de WSDL. Luego se puede especificar que un determinado business serviceimplementa ese “port type”, asociando el TModel con uno de los “binding templates” del “business service”.

Page 52: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 103Mario Muñoz Organero.

Ejemplo de TModel

<TModel TModelKey=“uuid:xyz987…”operator=“http://www.ibm.com”authorizeName=“John Doe”>

<name>HelloWorldInterface Port Type</name><description>An interface for a friendly WebService

</description><overviewDoc>

<overviewURL>http://localhost/helloworld.wsdl

</overviewURL></overviewDoc>

</TModel>

Servidores de información 104Mario Muñoz Organero.

Interfaces UDDI

Ofrece 2 interfaces: una para los proveedores de servicios y otra para quien consume los servicios.Los proveedores utilizan PublishSOAP para publicar los servicios, y los consumidores utilizan InquireSOAP para consultar por un servicio. Estos mismos servicios son descriptos en WSDL también.El tipos de datos manejados por las interfaces UDDI (por ej. businessDetails) está en las “UDDI XML Schemadefinitions”. Para importar las definiciones WSDL:

<import namespace=“urn:uddi-org:apilocation=“http://www.uddi.org/schema/2001/uddi_v1.xsd” />

Page 53: Servicios Web. - it.uc3m.es · Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común

Servidores de información 105Mario Muñoz Organero.

Interfaz Publisher

get_authTokendiscard_authTokensave_businesssave_servicesave_bindingsave_Tmodeldelete_businessdelete_servicedelete_bindingdelete_Tmodelget_registeredInfo

Servidores de información 106Mario Muñoz Organero.

Interfaz Inquiry

find_bindingfind_businessfind_ltservice (por ej. lista WebServices quecorreponden a un criterio dado)find_TModelget_bindingDetailget_businessDetailget_businessDetailExtget_serviceDetailget_TModelDetail