Aplicaciones Telemticas
David Melendi Palacio Abel Rionda Rodrguez
NDICE Introduccin La Pila Tecnolgica tras Web Services SOA en Web Services SOAP WSDL Taller prctico con SOAP UI UDDI WS-* REST Web Services ESB Herramientas de soporte
Tienen naturaleza binaria: trfico no interpretable Difcil de establecer una Poltica de Seguridad
HTTP, FTP, SMTP, etc. Muchos trabajan con simples mensajes de texto Se pueden reutilizar para implementar diferentes modelos de comunicacin:
SMTP Modelo Sncrono One-Way
2 4 1 Componente 1 (Emisor)
Componente 1 (Emisor)
Componente 2 (Receptor)
3 5
Componente 2 (Receptor)
4 5
Introduccin Puede ser la Web una solucin? Nace como repositorio de documentos:
Aplicaciones generan documentos de forma dinmica con diferentes tecnologas: PHP, ASP, JSP, Servlets, CGIs, etc. Humanos como principales destinatarios (B2C)
Ejecucin del programa Cadena de peticin HTTP Conexin TCP Conexi Solicitud de ejecucin
Indique la secuencia de eventos cliente navegador/servidor (desde la peticin HTTP hasta la correspondiente respuesta) suponiendo:
Un archivo .html como el de la figura sin la lnea <?php ?>. Un archivo. php como el que se muestra en la figura.
Funciones que permiten ejecutar acciones concretas Se ofrecen para ser ejecutados por otros procesos
Programa Cliente
Introduccin Son aplicaciones modulares e independientes que pueden ser descritas, publicadas, localizadas e invocadas a travs de la red Los Web Services se sustentan sobre la siguiente pila tecnolgica:
Descubrimiento Descripcin Empaquetamiento Transporte Red
NDICE Introduccin La Pila Tecnolgica tras Web Services SOA en Web Services SOAP WSDL Taller prctico con SOAP UI UDDI WS-* REST Web Services ESB Herramientas de soporte
Mecanismo para encontrar los descriptores de los web services Solucin ms extendida: UDDI Solucin IBM+Microsoft: WS-Inspection Mecanismo para describir un web service: qu red, qu transporte, qu protocolo de empaquetamiento, Estndar de facto: WSDL ? Otros: RDF del W3C o DAML de DARPA
Descripcin:
Transporte:
Mecanismo para la comunicacin directa entre aplicaciones Intercambio datos localizaciones distintas Estndar: TCP, HTTP, SMTP No estndar: Jabber (asncrono)
Mecanismos para realizar tareas bsicas de comunicacin Direccionamiento, encaminamiento, etc. Internet
Infraestructura Bsica:
XML Internet WSDL UDDI SOAP Formato Universal de Datos Medio de Comunicacin Descripcin de los Servicios Publicacin y Descubrimiento de Servicios Gestin del Intercambio de Informacin
La Pila Tecnolgica tras los Web Services Los servicios Web como Middleware muy verstil:
MOM o de mensajera: Para implementar un sistema de mensajera puro basado en mensajes SOAP. DOT u objetos distribuidos: Para implementar mtodos de objetos remotos (Uso de tecnologas como WSDL como IDL, generacin de stubs, registro de servicios mediante UDDI,)
Ms usada
XML Protocol, XKMS, SAML, XML-Dsig, XML-Enc, XSD, P3P, WSFL, Jabber, ebXML, etc. Las especificaciones en torno a los servicios Web se renen en WS-*.
WS-Security WS-I
NDICE Introduccin La Pila Tecnolgica tras Web Services SOA en Web Services SOAP WSDL Taller prctico con SOAP UI UDDI WS-* REST Web Services ESB Herramientas de soporte
SOA en Web Services Se sigue un patrn arquitectnico llamado SOA (Service-Oriented Architecture):
Registro De Servicio Bsqueda Publicacin
Proveedor De Servicio
Responsable de crear una descripcin de un servicio y publicarla en un Registro de Servicio Recibe invocaciones a web services desde uno o varios Solicitantes de Servicio Similar al lado servidor en un modelo cliente-servidor
Invocacin
Invoca web services de Proveedores de Servicio utilizando descripciones que obtiene de un Registro de Servicio Similar al lado cliente en un modelo cliente-servidor
Registro De Servicio
Invocacin
Proveedor De Servicio
Publica descripciones enviadas por Proveedores de Servicio y permite hacer bsquedas a los Solicitantes de Servicio Cuando un Solicitante obtiene la informacin que necesita, deja de utilizar el Registro para comunicarse con el Proveedor
Registro De Servicio
Publicacin
Proveedor De Servicio
Cliente 3 Invocar Web Service (SOAP) Implementacin de SOAP, UDDI y WSDL Aplicacin Servidor de Aplicaciones 1 Publicar Web Service (WSDL)
NDICE Introduccin La Pila Tecnolgica tras Web Services SOA en Web Services SOAP WSDL Taller prctico con SOAP UI UDDI WS-* REST Web Services ESB Herramientas de soporte
SOAP
SOAP son las siglas de Simple Object Access Protocol Es un protocolo de comunicacin basado en mensajes que permite el intercambio de datos estructurados entre aplicaciones de un entorno distribuido Es un protocolo basado en XML que consta de:
Un mecanismo para describir qu hay en un mensaje y cmo se debe procesar Un conjunto de reglas para insertar informacin especfica de cada aplicacin Una convencin para invocar llamadas a procedimientos remotos (RPC) y procesar sus respuestas
SOAP
Los Mensajes SOAP se transportan utilizando otros protocolos como FTP, SMTP o HTTP Lo ms habitual es utilizar HTTP para el transporte de los mensajes SOAP
Mensaje HTTP SOAP Envelope Header (Opcional)
Body
SOAP
Cliente y Servidor intercambian mensajes HTTP Peticiones y respuestas SOAP se mapean a peticiones y respuestas HTTP En una invocacin se utilizan:
La URI del destinatario El nombre del procedimiento remoto Los parmetros de ejecucin
Cliente
HTTP
HTTP
Ejemplo de Peticin
POST http://AAA.BBB.CCC.DDD:8080/ConsultaAlmacen HTTP/1.1 Host: AAA.BBB.CCC.DDD Content-type: text/xml; charset=utf-8 Content-length: 383 SOAPAction: <?xml version=1.0 encoding=UTF-8?> <SOAP-ENV:Envelope xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/ SOAP-ENV:encodingStyle=http://schemas.xmlsoap.org/soap/encoding/> <SOAP-ENV:Body> <DatosChequeo> <arg0 xsi:type=xsd:string>947-TI</arg0> <arg1 xsi:type=xsd:int>5</arg1> </DatosChequeo> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Ejemplo de Respuesta
Es Universal: Es Fcil:
Un documento XML tiene representacin en forma de rbol (los navegadores lo representan utilizando el llamado rbol DOM) Las APIS que recorren un XML tienen mtodos con las signatura tpica de recorrer rboles.
Un namespace o espacio de nombres permite incluir distintos vocabularios de etiquetas y atributos en un mismo documento XML. Elimina la ambigedad.
Un XML Schema permite definir para un documento XML: El vocabulario (etiquetas y atributos) El modelo (estructura y relaciones) Los tipos de datos
Body
Header (Opcional)
Bloques de Cabecera
Tipo especial de mensaje Indica algn error procesando un mensaje SOAP Aparece en el cuerpo de un mensaje SOAP
<?xml version=1.0 encoding=UTF-8?> <SOAP-ENV:Envelope > <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>Client.Authentication</faultcode> <faultstring>Nombre de Usuario Incorrecto</faultstring> <faultactor>http://www.it.uniovi.es</faultactor> <details> <! Detalles especificos de aplicacion --> </details> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
NDICE Introduccin La Pila Tecnolgica tras Web Services SOA en Web Services SOAP WSDL Taller prctico con SOAP UI UDDI WS-* REST Web Services ESB Herramientas de soporte
WSDL Podramos
Poner una pequea descripcin textual de cmo usar el web-service en una pgina web:
Demasiado impreciso Puede llevar a malentendidos
WSDL
WSDL son las siglas de Web Service Description Language Es un lenguaje de descripcin que permite indicar qu hace, dnde est y cmo se usa un Web Service Es similar al lenguaje IDL en otras herramientas middleware: RPCs, CORBA, Es un estndar para describir la sintaxis de invocacin de un Web-Service Propuesto como estndar al W3C por Microsoft, IBM y otros a finales de 2.000 Actualmente versin 2.0 (http://www.w3.org/TR/wsdl20)
El modelo de comunicacin: sncrono por peticin/respuesta, de un sentido (one-way), Los tipos de datos de las entradas y salidas (basados en XML Schema) La localizacin del servicio
El esquema que define la estructura del mensaje Informacin sobre los errores (los Fault de SOAP)
WSDL
<?xml version="1.0"?> <definitions name="StockQuote targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all><element name="tickerSymbol" type="string"/></all> </complexType> </element> <element name="TradePrice"> <complexType> <all><element name="price" type="float"/></all> </complexType> </element> </schema> </types> <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message>
Ejemplo:
WSDL
<message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input><soap:body use="literal"/></input> <output><soap:body use="literal"/></output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteSoapBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions>
Ejemplo (continuacin):
WSDL
Dentro de una descripcin WSDL hay:
types: Definiciones de Tipos message: representan los datos intercambiados portType: Equivale a las operaciones, que hacen referencia a un mensaje de entrada y otro de salida. binding: especifica el protocolo a utilizar y las especificaciones de formato de datos para las operaciones definidas en portType port: Que especifica una direccin a la que conectarse service: Que se emplea para agregar puertos relacionados
CLIENTE
SERVIDOR
SOAP
NDICE Introduccin La Pila Tecnolgica tras Web Services SOA en Web Services SOAP WSDL Taller prctico con SOAP UI UDDI WS-* REST Web Services ESB Herramientas de soporte
NDICE Introduccin La Pila Tecnolgica tras Web Services SOA en Web Services SOAP WSDL Taller prctico con SOAP UI UDDI WS-* REST Web Services ESB Herramientas de soporte
Pero
Cmo encuentro un proveedor de servicios? Qu servicios proporciona ese proveedor? De dnde saco las descripciones WSDL?
Repositorio WSDL
Simplicidad
UDDI
UDDI son las siglas de Universal Description and Discovery Integration Es toda una tecnologa que permite descubrir webservices tanto en tiempo de diseo como en tiempo de ejecucin Creada a finales de 2000 por Ariba, IBM y Microsoft Ahora controlada por OASIS, consorcio de ms de 310 empresas (http://www.uddi.org), versin 3.0 de 2.004 Permite disponer de registros centralizados de webservices Su complejidad ha evitado su adopcin
Registro UDDI
Publicacin En WSDL
Proveedor De Servicio
NDICE Introduccin La Pila Tecnolgica tras Web Services SOA en Web Services SOAP WSDL Taller prctico con SOAP UI UDDI WS-* REST Web Services ESB Herramientas de soporte
WS-*
WS-* son el conjunto de especificaciones que se han publicado en torno a los servicios Web
WS-I WS-Addressing WS-Security WS-Transaction
Ntese esta recomendacin del perfil 1.2 WS-I Basic Profile: Intenta eliminar una ambigedad en la spec de SOAP que puede conducir a errores de implementacin y as potenciar la interoperabilidad http://www.ws-i.org/Profiles/BasicProfile-1.2.html
WS-* WS-Addressing
Define dos elementos para incluir en las cabeceras de los mensajes SOAP y permitir el enrutado del mensaje:
EndPoint References: Informacin sobre el destino de la peticin
Message Information Headers: Informacin sobre el origen de la peticin. Ntese que el elemento replyTo permite Servicios Web Asncronos.
WS-* WS-Addressing
Define dos elementos para incluir en las cabeceras de los mensajes SOAP y permitir el enrutado del mensaje:
Message Information Headers: Informacin sobre el origen de la peticin. Ntese que el elemento replyTo permite Servicios Web Asncronos. No es necesario usar la misma conexin HTTP Peticin/Respuesta (sncrona)!
NDICE Introduccin La Pila Tecnolgica tras Web Services SOA en Web Services SOAP WSDL Taller prctico con SOAP UI UDDI WS-* REST Web Services ESB Herramientas de soporte
REST Web Services Servicios Web tipo REST (Representational State Transfer)
Surge como respuesta a la excesiva complejidad de los servicios Web y el creciente nmero de especificaciones (WS-*) Objetivo de mantener las cosas simples
Eliminacin de protocolos SOAP, WSDL o UDDI
REST Web Services: Los servicios son recursos a los que se accede con un identificador nico (URL) y soportan una serie de operaciones (mtodos HTTP). La representacin del recurso debe darse en un formato determinado (e.g. XML)
REST Web Services Servicios Web tipo REST (Representational State Transfer)
Ejemplo: Se pretende modelar el siguiente servicio Web que tiene los siguientes mtodos remotos con una aproximacin tipo REST
REST Web Services Servicios Web tipo REST (Representational State Transfer)
Identificador Operacin
Representacin (XML)
REST Web Services Servicios Web tipo REST (Representational State Transfer)
Identificador Representacin (XML) Operacin
REST Web Services Servicios Web tipo REST (Representational State Transfer)
Identificador Representacin (XML) Operacin
REST Web Services Servicios Web tipo REST (Representational State Transfer)
Identificador Representacin (XML) Operacin
Identificador
Operacin
REST Web Services Servicios Web tipo REST (Representational State Transfer)
Algunos escenarios son difciles de modelar con el modelo REST por lo que habra que utilizar WS tradicionales. No contempla utilidades como seguridad, gestin de transacciones,
NDICE Introduccin La Pila Tecnolgica tras Web Services SOA en Web Services SOAP WSDL Taller prctico con SOAP UI UDDI WS-* REST Web Services ESB Herramientas de soporte
Empleado
Cobros
Facturacin
Empleado
Interfaz de Gestin
Bus de Mensajes
Gestin de Flotas
Cobros
Facturacin
Pedidos
ESB Mule
ESB Mule
Mule: Especificaciones tcnicas
Herramientas de soporte
Ms conocimientos?
NOOOO!!!
Herramientas de soporte
AUDDI: navegador, apis, herr. validacin, etc. jUDDI: registro y herramientas java Herramientas de Microsoft:
Enterprise UDDI Services en Ms. Win. Server 2003 Microsoft UDDI SDK Microsoft Visual Studio .NET WebSphere UDDI Registry WebSphere Studio Application Developer Web Services Gateway Emerging Technologies Toolkit
Herramientas de IBM:
WST: editores, herramientas de validacin, herramientas de prueba, navegadores, XMLSpy 2006 de Altova: edicin de documentos WSDL
WSDL Analyzer de Xmethods: validacin y navegacin Sun Java Studio de Sun: Generacin automtica de descripciones WSDL
Herramientas de soporte
SOAP Test Utility: Permite hacer llamadas de prueba a Web-Services SOAP UI: Testing de Web-Services SOAP Trace .Net: Permite capturar mensajes SOAP
Herramientas de soporte
Plataformas ESB:
BEA AquaLogic Service Bus Cape Clear ESB Fiorano SOA IBM WebSphere Apache ServiceMix Oracle SOA Software AG Enterprise Service Integrator Sonic SOA TIBCO IONA Artix Microsoft BizTalk Server PolarLake Integration Suite Sun Java ESB webMethods Enterprise Service Platform Apache ServiceMix Mule