Servicios Web Capítulo 6: Tecnología Básica de los Servicios Web Pedro Álvarez alvaper@unizar.es José Ángel Bañares banares@unizar.es http://diis.unizar.es/PostWeb/ Departamento de Informática e Ingeniería de Sistemas Índice - Capítulo 6 o o o o Infraestructura mínima para Servicios Web SOAP: Simple Access Protocol Þ Objetivos de SOAP Þ Estructura y contenidos de un mensaje SOAP Þ Mapeo de SOAP a un protocolo de transporte Þ RPC sobre SOAP Þ SOAP asíncrono Þ Ejemplo SOAP y Java WSDL:Web Service Description Language Þ Objetivos de WSDL Þ Estructura de una interface WSDL Þ Implicaciones del modelo WSDL Þ Utilización de WSDL UDDI: Universal Description Discovery and Integration Þ Objetivos de UDDI Þ Estructuras de dato UDDI Þ Descripción del API UDDI Þ Pasos para publicar un servicio Web Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 2 Infraestructura mínima de Servicios Web o Para abordar el problema de la invocación de Servicios Web precisamos: Þ Una sintaxis común para todas las especificaciones: Þ Un mecanismo de interacción entre lugares remotos. • La especificación de este mecanismo requiere 1. 2. 3. Un formato de datos común para los mensajes que se intercambian Un acuerdo o norma para soportar formas de interacción específicas (p.e. mensajes o RPC) Un conjunto de mapeos de mensajes en un protocolo de transporte u En el contexto de los servicios Web se pueden usar diferentes protocolos de transporte: TCP/IP, HTTP para hacer tunneling, SMTP (e-mail) si se quiere mensajes asíncronos. s • Por lo tanto el mecanismo debe ser lo suficientemente general para trabajar con diferentes protocolos de transporte. El mecanismo de interacción debe permitir que las aplicaciones estén poco acopladas • • Por esta razón la unidad de comunicación básica será el mensaje Sin embargo, se pueden permitir también interacciones al estilo RPC, por ejemplo, cuando las dos aplicaciones fueron diseñadas originalmente sobre middlewares basados en RPC. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 3 Infraestructura mínima de Servicios Web o SOAP Þ Lo servicios pueden intercambiar mensajes por medio de convenciones estandarizados para: • Transformar una invocación en un mensaje XML • Intercambiar mensajes • Recuperar la invocación real al servicio desde un mensaje en XML Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 4 Infraestructura mínima de Servicios Web o WDSL: Descripción de los servicios (especialmente sus interfaces) de forma estándar Þ Cumple el papel de los IDLs en middleware convencionales, añadiendo lo necesario para tratar con la falta de un middleware centralizado que gestiona transporte y redirección de mensajes. Þ El interface se especifica cada método, con sus parámetros de entrada y salida. • Si el estilo de interacción es RPC, estos mensajes llevan los parámetros de entrada y salida del procedimiento invocado. • Un fichero WSDL se puede compilar para el lenguaje de programación apropiado y generar los stubs y capas intermedias necesarias para hacer las llamadas Web de forma transparente. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 5 Infraestructura mínima de Servicios Web proveedor servicio cliente servicio objeto aplicación (cliente) objeto aplicación (proveedor servicio) middleware basado en SOAP middleware basado en SOAP mensajes SOAP intercambiados sobre HTTP, SMTP, u otro transporte convierte llamadas de procedimiento a/de mensajes XML enviados a través de HTTP u otros protocolos. Copyright Springer Verlag Berlin Heidelberg 2004 Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 6 Infraestructura mínima de Servicios Web <operation name="orderGoods"> <input message = "OrderMsg"/> </operation> Copyright Springer Verlag Berlin Heidelberg 2004 WSDL del proveedor del servicio compilador WSDL (lado cliente) La principal diferencia con middleware convencionales es la ausencia de una plataforma middleware común. compilador WSDL (lado servidor) cliente servicio proveedor servicio Objeto de la aplicación (cliente) Objeto de la aplicación (proveedor servicio) stub skeleton middleware basado en SOAP middleware basado en SOAP mensajes SOAP Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 7 Infraestructura mínima de Servicios Web IDL del proveedor de servicios interface Purchasing { float getQuote ( in long productId); float purchaseGoods (in long productId, in long quantity) } compilador IDL (lado cliente) compilador IDL (lado servidor) objeto de la aplicación (cliente) objeto de la aplicación (proveedor servicio) stub skeleton Object Request Broker Copyright Springer Verlag Berlin Heidelberg 2004 Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 8 Infraestructura mínima de Servicios Web Cliente servicio Proveedor de servicio objeto aplicación (cliente) objeto aplicación (proveedor servicio) stub skeleton middleware basado en SOAP middleware basado en SOAP mensajes SOAP mensajes SOAP (para buscar servicios) Sólo nos falta un servicio de nombres y directorio: •Interfaces y URI en el que están disponibles los servicios mensajes SOAP (para publicar descripciones de servicios) middleware basado en SOAP descripciones de servicio Copyright Springer Verlag Berlin Heidelberg 2004 Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) registro UDDI 9 SOAP: Simple Access protocol o o Breve historia Þ El W3C comienza a trabajar con SOAP en 1999 Þ La primera versión 1.0 se basa enteramente en HTTP Þ La siguiente revisión 1.1 (Mayo 2000) se reconvierte en un transporte genérico de información sobre una variedad de protocolos de transporte. Þ Mayo de 2003, la nueva versión 1.2 clarifica y añade semántica adicional sobre SOAP 1.1 en términos de mapeos a protocolos y codificación XML. (Especificación en fase de revisión) Objetivos de SOAP: Como organizar la información utilizando XML de forma estructurada y tipada de forma que pueda ser intercambiada entre iguales. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 10 SOAP especifica o En concreto SOAP especifica: Þ Un formato de mensaje para comunicaciones en una dirección, describiendo como se organiza la información en un documento XML. Þ Un conjunto de normas para implementar interacciones al estilo RPC mediante mensajes SOAP, definiendo como los clientes pueden invocar un procedimiento remoto enviando un mensaje SOAP y como los servicios pueden replicar enviando otro mensaje al cliente. Þ Un conjunto de reglas que cualquier entidad que procesa un mensaje SOAP debe seguir. Definen que elementos debería leer y comprender, y las acciones que deberían realizar sino entienden el contenido. Þ Una descripción de cómo su mensaje SOAP se debería transportar sobre HTTP y SMTP. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 11 SOAP o o Como protocolo de comunicación, Þ SOAP no tiene estado Þ Es una comunicación en una dirección. Þ Ignora la semántica de los mensajes intercambiados. Þ Soporta interacciones entre aplicaciones poco acopladas mediante intercambio de mensajes “ASINCRONOS” y en “UNA DIRECCION”. Cualquier complejidad posterior como mensajes síncronos y bidireccionales, o interacciones al estilo RPC requieren que SOAP se combine con un protocolo subyacente (o middleware) que tenga propiedades adicionales: Þ Por ejemplo un protocolo de transporte síncrono como HTTP debería ser usado para transportar los dos mensajes: uno en la petición HTTP, y otro en la respuesta Þ Como opuesto a una comunicación asíncrona con STMP. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 12 Estructura y contenidos de un mensaje SOAP o o o o o o SOAP se basa en intercambio de mensajes Los mensajes son como sobres donde la aplicación encierra los datos que se van a enviar Un mensaje tiene dos partes: Þ Header (cabecera): que se puede dividir en bloques Þ Body (cuerpo): que se puede dividir en bloques SOAP no establece lo que hay que hacer con la cabecera y el cuerpo, solo establece que la cabecera es opcional. La cabecera es para el nivel de infraestructura. El cuerpo es para el nivel de aplicación. SOAP Envelope SOAP header Header Block SOAP Body Body Block Bloques: Cualquier primer nivel hijo. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 13 Estructura y contenidos de un mensaje SOAP o o o SOAP asume que cada mensaje tiene un remitente (sender) y un receptor (receiver), y un número arbitrario de intermediarios (llamados nodos) que procesan el mensaje y redirigen este al receptor. El núcleo de la información que envía el remitente al receptor está en el body. En el header, cualquier otra información para procesado intermedio o servicios de valor añadido.). Þ Usos típicos del header son: información de coordinación, identificadores (p.e., transacciones), información de seguridad (p.e, certificados) Þ La necesidad de los intermediarios es obvia si pensamos que el procedimiento invocado real es parte de una arquitectura de varias capas. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 14 Estructura y contenidos de un mensaje SOAP o o SOAP no establece ninguna estructura posterior en el contenido de las cabecera o los mensajes. Pero existen formas comúnmente aceptadas de construir la cabecera y el cuerpo de los mensajes. Þ Los aspectos que influyen en como se construyen el body y el header: • El estilo de interacción: Estilo RPC, y estilo Documento. u Si la interacción es síncrona o asíncrona es ortogonal al estilo de interacción, y no influye en la estructura. • Reglas de codificación: Como se representa una estructura o dato en XML. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 15 Estructura y contenidos de un mensaje SOAP: Estilo de interacción SOAP envelope SOAP envelope SOAP body SOAP body documento ordenCompra -producto -cantidad documento Acknowledgement -id_de_orden Estilo de interacción Documento Copyright Springer Verlag Berlin Heidelberg 2004 Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 16 Estructura y contenidos de un mensaje SOAP: Estilo de interacción SOAP envelope SOAP envelope SOAP body SOAP body method name ordenCompra method return input parameter 1 producto return value -id_de_orden input parameter 2 cantidad Estilo de interacción RPC Copyright Springer Verlag Berlin Heidelberg 2004 Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 17 Estructura y contenidos de un mensaje SOAP: Reglas de codificación <ProductItem> <name>…</name> <type>…</type> <make>…</make> </ProductItem> <ProductItem name=“…” type=“…” make=“…” /> <ProductItem name=“…” <type>…</type> <make>…</make> </ProductItem> SOAP 1.2 no impone ninguna forma específica de codificar Si da recomendaciones (que se pueden ignorar) P.e. Codificaciones de arrays y estructuras que se pueden serializar en XML Copyright Springer Verlag Berlin Heidelberg 2004 Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 18 Ejemplo mensaje SOAP <?xml version=‘1.0’ ?> <SOAP:Envelope xmlns:SOAP="http://www.w3c.org/2001/12/soap-envelop/" xmlns:p =‘http://www.mafia.it/pizzas’> <SOAP:Header> <p:prioridad> urgente </p:prioridad> <p:origen>cornelio@sicilia.it</p:origen> </SOAP-ENV:Header> <SOAP:Body> <p:encargo> <p:pizza nombre=‘Margarita’> <p:tamaño> familiar </p: tamaño> <p:comentario> con mucho queso </p: comentario > </p:pizza> </p:encargo> </SOAP:Body> </SOAP:Envelope> Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 19 Estructura y contenidos de un mensaje SOAP: ejemplo Ejemplo en estilo de interacción RPC <?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2002/06/soap-envelope" > <env:Header> <t:transactionID xmlns:t="http://intermediary.example.com/procurement" env:role="http://www.w3.org/2002/06/soap-envelope/role/next" env:mustUnderstand="true" > 57539 </t:transactionID> </env:Header> envelope header blocks <env:Body> <m:orderGoods env:encodingStyle="http://www.w3.org/2002/06/soap-encoding" xmlns:m="http://example.com/procurement"> <m:productItem> <name>ACME Softener</name> </m:productItem> <m:quantity> 35 </m:quantity> </m:orderGoods> </env:Body> body </env:Envelope> Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) Copyright Springer Verlag Berlin Heidelberg 2004 20 Estructura y contenidos de un mensaje SOAP: cabecera o SOAP permite especificar quien debería tratar la cabecera y que debería hacer con esta. Con este propósito incluye: Þ El atributo actor SOAP: quien debería procesar el header o bloque particular. El nodo que procesa el mensaje puede jugar el papel: none, next, ultimateReceiver. • None es para propagar información que no debe ser procesada. • Next indica que un nodo que reciba el mensaje puede procesar este bloque. • ultimateReceiver indica que la cabecera va dirigida al receptor final del mensaje. Þ El atributio mustUnderstand : con valores 1 o 0, para indicar si es obligatorio procesar el header. Si un nodo puede procesar el mensaje (como es indicado por el atributo actor), el atributo mustUnderstand attribute determina si es obligatorio procesarlo. Si es obligatorio y no puede se detiene cualquier procesado posterior y se genera un fallo (fault). Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 21 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Header> <t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1"> 5 </t:Transaction> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DEF</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 22 Estructura y contenidos de un mensaje SOAP: cuerpo (body) o o o o El cuerpo es la información específica de la aplicación contenida en el mensaje Una entrada de cuerpo ( o bloque) es sintácticamente equivalente a una entrada de cabecera con atributos de actor= ultimateReceiver y mustUnderstand = 1 A diferencia de las cabeceras, SOAP no especifica nada sobre el contenido de los bloques del cuerpo: Þ Mapeo de RPC a una colección de bloques del cuerpo SOAP Þ El bloque Fault (para representar errores en el procesamiento de un mensaje SOAP) El bloque fault tiene cuatro elementos (en v.1.1): Þ fault code: indica la clase de error (version, mustUnderstand, cliente, servidor) Þ fault string: explicación legible del fallo Þ fault actor: quien originó el fallo Þ detail: información específica de la aplicación sobre la naturaleza del fallo Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 23 Estructura y contenidos de un mensaje SOAP: cabecera o o o En la version 1.2, el bloque fault element se especifica en más detalle. Debe contener dos sub-elementos obligatoriamente: Þ Code: Contiene un valor (el código del fallo) y probablemente un subcódigo (de información especifica de la aplicación) Þ Reason: una cadena como en la v.1.1 Y puede contener algunos elementos adicionales: Þ detail: como en la v.1.1 Þ node: la identificación del nodo que produjo el fallo (si no aparece, por defecto es el receptor del mensaje) Þ role: el role que juega el nodo que generó el fallo Errores en la comprensión de una cabecera obligatoria a procesar se responden con un bloque fault, pero también se incluye una cabecera especial que indica cual de las cabeceras originales no se comprendió. . Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 24 SOAP: Fault (ejemplo) <?xml version=‘1.0’ ?> <SOAP:Envelope xmlns:SOAP=‘http://www.w3c.org/2001/12/soap-envelop/’> <SOAP:Body> <SOAP:Fault> <faultcode> soap: Receiver </faultcode> <faultstring> Error al procesar el mensaje </faultstring> <detail> <p:detalles xmlns:p ‘http://www.mafia.it/pizzas’> <mensaje>La pizza Barbacoa no puede llevar tanto queso </mensaje> </p:detalles> <detail> </SOAP:Fault> </SOAP:Body> </SOAP:Envelope> Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 25 Ejemplo mensajes SOAP Petición RPC SOAP Envelope SOAP header Contexto Transaccional Respuesta RPC (una de las dos) SOAP Envelope SOAP header SOAP Body Nombre del procedimiento Input param 1 Input param 2 Contexto Transaccional SOAP Body Return parameter Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) SOAP Envelope SOAP header Contexto Transaccional SOAP Body Fault entry 26 Ejemplos de Codificación SOAP Tipos Simples <?xml version=‘1.0’ ?> <SOAP:Envelope xmlns:SOAP=‘http://www.w3.org/2001/12/soap-envelop/’ xmlns:xsi=“htpp://wwww.w3.org/2001/XMLSchema” encodingStyle=‘http://www.w3.org/2001/12/soap-enconding’> <SOAP:Body> <p:pizza> <p:código xsi:type:’soap:int’>234</p:codigo> <p:tamaño xsi:type =‘soap:String’>familiar</p:tamaño> </p:pizza> </SOAP:Body> </SOAP:Envelope> Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 27 Ejemplos de Codificación SOAP Estructuras Struct Pizza { int codigo; string nombre }; <Pizza xmlns=‘cualquier_URI’> <codigo>234</codigo> <nombre>Barbacoa</nombre> </Pizza> Arrays <pizzas xsi:type=‘soap:Array’ soap:arrayType=‘p:Pizzas[2]’> <pizza> <codigo>234</codigo> <nombre>Barbacoa</nombre> </pizza> <pizza><codigo>237</codigo> <nombre>Barbacoa</nombre> </pizza> </pizzas> Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 28 Ejemplos de Codificación SOAP Arrays parciales <pizzas xsi:type=‘soap:Array’ soap:arrayType=‘p:Pizzas[10]’ soap:offser=‘[4]’> <pizza> <codigo>234</codigo> <nombre>Barbacoa</nombre> </pizza> <pizza><codigo>237</codigo> <nombre>Barbacoa</nombre> </pizza> </pizzas> <pizzas xsi:type=‘soap:Array’ soap:arrayType=‘p:Pizzas[10]’> <pizza soap:position=‘2’> <codigo>234</codigo> <nombre>Barbacoa</nombre> </pizza> < pizza soap:position=‘5’ ><codigo>237</codigo> <nombre>Barbacoa</nombre> </pizza> </pizzas> Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 5º y 6º elemento 2º y 5º elemento 29 Mapeo de SOAP a un protocolo de transporte o o o o Un “binding” es una descripción de como se envía un mensaje SOAP utilizando un protocolo. El binding típico de SOAP es HTTP SOAP puede usar GET o POST. Con GET, la petición no es un mensaje SOAP pero la respuesta es un mensaje SOAP, con POST la petición y la respuesta son mensajes SOAP (en la versión 1.2, la versión 1.1 considera sobre todo el uso de POST). La dirección del servidor: En el caso de HTTP el URL, en el caso de SMTP la dirección “to”. NO FORMA parte del mensaje SOAP. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) HTTP POST SOAP SOAP Envelope Envelope SOAP header Transactional context SOAP Body Name of Procedure Input parameter 1 Input parameter 2 30 Una llamada RPC sobre SOAP HTTP Post SOAP envelope SOAP header transactional context SOAP body cliente servicio SOAP engine HTTP engine Implementación cliente (otras capas) name of the procedure input parameter 1 input parameter 2 HTTP Post SOAP envelope proveedor servicio HTTP engine SOAP engine Implementación servicio (otras capas) SOAP header transactional context SOAP body return parameter Copyright Springer Verlag Berlin Heidelberg 2004 Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 31 Una llamada RPC sobre SOAP proveedor servicio cliente servicio implementación cliente invoca el servicio como una llamada local stub del cliente invoca el SOAP engine para construir el mensaje SOAP SOAP engine Mapea el mensaje SOAP en HTTP y lo pasa a un cliente HTTP que lo envía al proveedor HTTP engine Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) implementación del servicio Invoca un procedimiento local que Implementa el servicio stub del servidor El router parsea el mensaje, identifica el stup apropiado, y envía el mensaje parseado SOAP router pasa el contenido del mensaje HTTP al router HTTP server Copyright Springer Verlag Berlin Heidelberg 2004 32 SOAP asíncrono o o o El Estilo RPC da lugar a sistemas muy acoplados Þ Muchos sistemas B2B utilizan interacciones estilo documento asíncronas. Þ En lugar de interacciones directas, se usan colas. Una forma de de lograr interacciones asíncronas SOAP es mediante el protocolo STMP Otra forma es utilizar procesos separados (idéntico a como ser haría con sistemas basados en RPC para implementar RPC asíncronos) Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 33 SOAP como un protocolo sencillo o o o SOAP no incluye nada sobre Þ fiabilidad Þ intercambio de mensajes complejos Þ transacciones Þ seguridad Þ… Como tal, no es adecuado por si solo para implementar aplicaciones industriales que incorporen características típicas de middlewares como transacciones o envío fiable de mensajes SOAP necesita que se estandaricen estas características: Þ WS-security Þ WS-Coordination Þ WS-Transactions Þ… Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 34 Ejemplo SOAP sencillo 1 2 3 4 5 6 7 8 9 10 11 12 13 // Fig. 29.1: SimpleService.java // Implementation for the requested method on the server public class SimpleService { public String getWelcome( String message ) throws Exception { String text = "Welcome to SOAP!\nHere is your message: " + message; return text; // response La clase SimpleService reside en el servidor El método devuelve un String } } Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 35 Apache SOAP Disponible en: xml.apache.org/soap SOAP RPC requiere un servlet engine como Tomcat jakarta.apache.org y un parser como Xerces de Apache Xml.apache.org/xerces-j/index.html Axis (continuación) http://ws.apache.org/ Herramienta de administración SOAP de Apache Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 36 Apache SOAP Descripción del servicio servido Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 37 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 // Fig. 29.4 : GetMessage.java // Program that makes a SOAP RPC // import Java packages import java.io.*; import java.net.*; import java.util.*; // import third-party packages import org.apache.soap.*; import org.apache.soap.rpc.*; APIs de la implementación SOAP public class GetMessage { // main method public static void main( String args[] ) { String encodingStyleURI = Constants.NS_URI_SOAP_ENC; String message; if ( args.length != 0 ) message = args[ 0 ]; else message = "Thanks!"; Cliente RPC Especifica estilo de codificación de los mensajes SOAP Especifica URL del servidor // attempt SOAP remote procedure call try { URL url = new URL( "http://localhost:8080/soap/servlet/rpcrouter" ); // build call Call remoteMethod = new Call(); Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico remoteMethod.setTargetObjectURI( Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) "urn:xml-simple-message" ); Instancia objeto Call y establece su URI 38 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 // set name of remote method to be invoked remoteMethod.setMethodName( "getWelcome" ); remoteMethod.setEncodingStyleURI( encodingStyleURI ); // set parameters for remote method Vector parameters = new Vector(); parameters.addElement( new Parameter( "message", String.class, message, null ) ); remoteMethod.setParams( parameters ); Response response; // invoke remote method response = remoteMethod.invoke( url, "" ); // get response if ( response.generatedFault() ) { Fault fault = response.getFault(); System.err.println( "CALL FAILED:\nFault Code = " + fault.getFaultCode()+ "\nFault String = " + fault.getFaultString() ); } else { Parameter result = response.getReturnValue(); // display result of call System.out.println( result.getValue() ); } Postgrado}Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) Construye parámetros utilizados para invocar método getWelcome de SimpleService Invoca método getWelcome y almacena el valor devuelto en el objeto Response Muestra un mensaje si ocurre un error Muestra el valor devuelto por el método si no hay error 39 67 68 69 70 71 72 73 74 75 76 77 78 79 80 // catch malformed URL exception catch ( MalformedURLException malformedURLException ) { malformedURLException.printStackTrace(); System.exit( 1 ); } // catch SOAPException catch ( SOAPException soapException ) { System.err.println( "Error message: " + soapException.getMessage() ); System.exit( 1 ); } } } java GetMessage Welcome to SOAP! Here is your message: Thanks! java GetMessage "my message” Welcome to SOAP! Here is your message: my message Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 40 Plataformas para servicios Web basados en Java o Cada plataforma tiene diferentes formas de implementar los servicios Web Þ SUN: Java Web Services Developer Pack (JWSDP) Þ CapeConnect (www.capeclear.com) Þ Glue Standard (www-themindelectric.com) Þ IONA Orbix E3A XMLBus (www.iona.com) Þ WASP Server for Java (www.systinet.com) Þ Axis (sucesor del Apache SOAP 2.2, xml.apache.org/axis) Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 41 WSDL: Web Services Description Language o WSDL es equivalente a los IDLs, pero los Servicios Web son más complejos de describir Þ Además de definir las operaciones, hay que definir los mecanismos de interacción (bindings). • En middleware convencionales, siempre se usa el mismo middleware, por lo que el mecanismo de acceso es implícito al middleware u Solo se aborda nombre de servicio y signatura • En los servicios Web cada servicio se puede servir con distintos protocolos Þ Hay que indicar la localización del servicio • En middleware convencionales la localización del objeto es transparente (el middleware se encarga de localizar el objeto) • La ausencia de una plataforma de servicios Web centralizada implica conocer la localización donde enviar el mensaje SOAP Þ Cabe la posibilidad del mismo servicio con distintos protocolos de transporte y en diferentes localizaciones. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 42 WDSL o Las interacciones son con frecuencia asíncronas en Servicios Web: Þ Los IDLs convencionales describen un único punto de entrada al servicio (una interacción RPC única) Þ La invocación de un servicio Web suele conllevar el intercambio de varios mensajes asíncronos. WSDL incluye una colección de diferentes paradigmas de interacción, junto con la posibilidad de combinar operaciones o grupos de operaciones en un interface. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 43 Estructura de un Interface WSDL o Una especificación WSDL consta de: Þ Una parte abstracta (analoga a un IDL) • Se definen los tipos. Las estructuras de datos que se intercambian. u Los esquemas XML tienen tipos de datos básicos, pero permiten definir estructuras. • Se definen los mensajes. Cada mensaje es un documento tipado con partes. Cada parte se caracteriza por un nombre y un tipo. u 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 • Se definen las operaciones. Existen 4 tipos de operación: u u u u One-way: El cliente invoca un servicio enviando un único mensaje. (1 mensaje, asíncrono) Notificacions: El servidor envía un único mensaje (1 mensaje, asíncrono) Request-response: El servidor es invocado y responde (2 mensajes, síncrono) Solicit-response: El servidor invoca y espera respuesta (2 mensajes, síncrono) especificación WSDL parte abstracta tipos mensajes operaciones tipos de puertos parte concreta bindings servicios y puertos • Se definen tipos de puerto, que agrupan operaciones. Þ Una parte concreta:define el protocolo de transporte (binding) y otras informaciones Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) Copyright Springer Verlag Berlin Heidelberg 2004 44 Estructura de un Interface WSDL Þ Para definir (concretar) una instancia de servicio real, se tiene que definir : • El conjunto exacto de puertos que implementa • Los protocolos de transporte usados en la implementación de los tipos de puertos • Las direcciones en los que estas accesibles • El mismo tipo de mensaje, puede ser codificado de distintas maneras. Þ Una parte concreta consta de: 1. InterfaceBindings: u 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 o documento 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. Dos opciones: literal (utilizado normalmente en document style, toma las definiciones de esquema XML) y encoding (utilizado normalmente en estilo RPC, utiliza reglas de codificación SOAP). especificación WSDL parte abstracta tipos mensajes operaciones tipos de puertos parte concreta bindings servicios y puertos Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) Copyright Springer Verlag Berlin Heidelberg 2004 45 Estructura de un Interface WSDL Þ Una parte concreta consta de (cont.): 2. Ports (EndPoints): u Combinan la información de los InterfaceBindings con direcciones de red (especificados por URI) en la que se puede acceder a la implementación del tipo de puerto. 3. Servicios: u Agrupaciones lógicas de puertos. Un servicio específico WSDL podría estar accesible en diferentes direcciones (p.e. URIs de diferentes máquinas, una em Europa y otra en América) u Normalmente un servicio WSDL agrupa puertos relacionados, disponibles con frecuencia en una misma dirección. u Otra agrupación posible es utilizar diferentes ports que representan diferentes bindings del mismo tipo de puerto. u Permiten, en definitiva, que la misma funcionalidad sea accesible en diferentes estilos de interacción y con diferentes protocolos de transporte. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) especificación WSDL parte abstracta tipos mensajes operaciones tipos de puertos parte concreta bindings servicios y puertos Copyright Springer Verlag Berlin Heidelberg 2004 46 Estructura de un Interface WSDL o o o o Añadiendo InterfaceBindings, Ports y Services, la definición del interface se va “concretando”. Con la información de binding, los usuarios conocen que protocolos usar, como estructurar los mensajes XML, y que se espera al enviar el mensaje. Þ WSDL 1.1 define en la actualidad 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. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 47 <?xml version="1.0"?> <definitions name="Procurement" targetNamespace="http://example.com/procurement/definitions" xmlns:tns="http://example.com/procurement/definitions" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" > Ejemplo WSDL <message name="OrderMsg"> <part name="productName" type="xs:string"/> <part name="quantity" type="xs:integer"/> </message> <portType name="procurementPortType"> <operation name="orderGoods"> <input message = "OrderMsg"/> </operation> </portType> abstract part messages operation and port type <binding name="ProcurementSoapBinding" type="tns:procurementPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="orderGoods"> <soap:operation soapAction="http://example.com/orderGoods"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> concrete part <service name="ProcurementService"> <port name="ProcurementPort" binding="tns:ProcurementSoapBinding"> <soap:address location="http://example.com/procurement"/> </port> </service> Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico </definitions> Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) port and service binding Copyright Springer Verlag Berlin Heidelberg 2004 48 Ejemplo WSDL <?xml version=“1.0” encoding=“utf-8”?> <definitions xmlns:s=… <types> <s:schema <s:element name=“suma”> <s:complex Type> <s:sequence> <s:element minOccurs=“1” maxOccus=“1” name=“a” type=“s:int”/> <s:element minOccurs=“1” maxOccus=“1” name=“b” type=“s:int”/> </s:sequence> </s:complex Type> </s:element> …. abstracta <message name=“sumaSoapIn”> <part name=“parameters” element=“s0:suma”/> </message> … + Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 49 Ejemplo WSDL … <portType name=“ServicioSumaSoap”> <operation name=“suma”> <input message=“sO:sumaSoapIn/> <output message=“sO:sumaSoapOut”/> </operation> </portType> … <binding name =“ServicioSumaSoap” type=“sO:ServicioSumaSoap”> <soap:binding transport=“http://schemas.xmlsoap.org/soap/http” style=“document” /> <operation name=“suma”> <soap:operationsoapAction=“http://tempuri.org/suma” style=“document” /> <input> <soap:body use=“literal” /> </input> <output> <soap:body use=“literal”/> </output> </operation> </binding> <service name=“ServicioSuma”> <port name=“ServicioSumaSoap” binding=“s0:ServicioSumaSoap”> <soap:address location=http://localhost/Suma/Service1.asmx“ /> <port> </service> Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico </definitions> Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) abstracta concreta 50 Implicaciones del Modelo WSDL o o o Los diferentes tipos de interacción: Þ Suponen que un servidor puede invocar servicios (se comporta como un cliente). Típico en middlewares orientados a mensajes. La ventaja de la separación de la parte abstracta y concreta es que la primera puede reutilizarse Þ Un WDSL puede importar otro WDSL. Por ejemplo, un WDSL 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. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 51 Utilización de WSDL o El W3C ha identificado tres usos potenciales de WSDL: 1. Lenguaje de descripción de servicio tradicional (contrato que implementa un Servicio Web). Þ El contrato indica como interactuar con el servicio, datos a enviar y devolver, operaciones involucradas y el formato y protocolo. 2. Entrada para compiladores de stub y otras herramientas: Þ Þ Las bases de datos comerciales han comenzado a ofrecer funcionalidad para generar automáticamente las descripciones WSDL de procedimientos almacenados Los servidores de aplicaciones dan facilidades para generar stubs de documento WSDL y para generar WSDL de clases (p.e. Clases java). 3. Uso no definido claramente por el W3C en referencia a la semántica. Þ WSDL para capturar la información que permitirá a los diseñadores razonar sobre la semántica de los servicios. ¡Pero la semántica está fuera en estos momentos de la especificación WSDL! Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 52 Utilización de WSDL WSDL del proveedor del servicio 1 2 compilador WSDL (lado del cliente) generador WSDL compilador WSDL (lado del servidor) cliente servicio service provider objeto de aplicación proveedor servicio) objeto de aplicación (cliente) stub skeleton middleware basado en SOAP middleware basado en SOAP Mensajes SOAP Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) Copyright Springer Verlag Berlin Heidelberg 2004 53 UDDI: Universal Description Discovey and Integration o o Primera propuesta en Septiembre de 2000 (IBM, Ariba y Microsoft), desde la versión 3 (julio 2002) bajo el paraguas OASIS Objetivos UDDI: Þ Especificar un framework para describir y descubrir servicios Web Þ Todo gira alrededor de la noción de bussines registry (un servicio de nombres y directorio) • La idea era registrar cada servicio desarrollado en el mundo Þ UDDI define estructuras de datos y APIs para publicar descripciones de servicios y buscar servicios. Þ Al ser a su vez un servicio Web, las APIs de UDDI están también especificadas en WSDL con SOAP. Þ Permite dos cosas_ • A los desarrolladores encontrar información para escribir los clientes de los servicios • Permite “dynamic binding”, permitiendo a los clientes preguntar al registro y obtener las referencias a los servicios de interés. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 54 UDDI o Se clasifica en función de para que se usa la información (similar a directorio telefónico) Þ Páginas blancas: Información de contacto.listados de organizaciones contacto y servicios. Los cliente UDDI pueden encontrar servicios Web dados por una empresa. Þ Páginas amarillas: Información de industria. industria clasificación de compañías y servicios Web de acuerdo a una taxonomía. Þ Páginas Verdes: Información técnica y especificaciones. Describe como puede ser invocado un servicio Web. Punteros a descripciones de servicios (descripciones externas al registro UDDI). Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 55 Estructuras de datos UDDI o Un registro UDDI contiene cuatro tipos de información: Þ BusinessEntity:Describe la organización que ofrece el servicio. • Nombre, dirección y otra información de contacto. Þ BusinessService:Grupo de servicios Web relacionados ofrecido por una BusinessEntity (empresa), pero ofrecida en diferentes direcciones, versiones, y tecnologías. Al igual que las BusinessEntity, pueden incluir información de clasificación. • Corresponde con una clase de servicio (p.e. Reserva de viaje) Þ BusinessTemplate:Información técnica para utilizar el servicio. • Dirección del servicio • Referencias documentos (tModels) describiendo el interface u otras propiedades. • Como dar valor a los parámetros y valores por defecto Þ tModels (Technical model): Contenedor genérico para cualquier especificación. P.e. Puede representar un interface de servicio en WSDL, una clasificación, un protocolo de interacción, o la semántica de una operación. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 56 businessEntity nombre contactos descripción indentificadores categorías businessService clave de servicio nombre descripción categorías bindingTemplate clave de binding descripción dirección información detallada referencia a tModels tModel tModel tModel key key clave name name nombre description description descripción overviewDoc overviewDoc Documento (overviewDoc) identifiers identifiers indentificadores categories categories categorías tModel tModel key clave name nombre description descripción overviewDoc documento(overviewDoc) identifiers indentificadores categories categorías Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) Especificaciones almacenadas en el sitio del proveedor Almacenado en el registro UDDI Copyright Springer Verlag Berlin Heidelberg 2004 57 modelo de datos UDDI io vic r e s un del e r o sob tM e v la un n c a en ó i c c ma pecifi r o inf se es La Proveedor: Información sobre la entidad que ofrece el servicio tModel: Descripciones de especificaciones de servicios 0..n Servicio: Información sobre una familia particular de ofertas 0..n Binding: Información técnica sobre un punto De entrada a un servicio 0..n Bindings contienen referencias a tModels. Estas referencias declaran las especificaciones del interface. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 58 Ejemplo de un tModel UDDI Descripción del API UDDI Especificación en WSDL overviewDoc (especificaciones en WSDL y del API) <tModel tModelKey=”uddi:uddi.org:v3_publication”> <name>uddi-org:publication_v3</name> <description>UDDI Publication API V3.0</description> <overviewDoc> <overviewURL useType=”wsdlInterface”> http://uddi.org/wsdl/uddi_api_v3_binding.wsdl#UDDI_Publication_SoapBinding </overviewURL> </overviewDoc> <overviewDoc> Especificación en lenguaje natural <overviewURL useType=”text”> http://uddi.org/pubs/uddi_v3.htm#PubV3 </overviewURL> </overviewDoc> información de clasificación (especifica que este tModel trata de especificaciones XML, WSDL, y SOAP) <categoryBag> Un tModel puede <keyedReference keyName=”uddi-org:types:wsdl” a otros tModels keyValue="wsdlSpec" tModelKey="uddi:uddi.org:categorization:types”/> <keyedReference keyName=”uddi-org:types:soap” keyValue="soapSpec" tModelKey="uddi:uddi.org:categorization:types”/> <keyedReference keyName=”uddi-org:types:xml” keyValue="xmlSpec" tModelKey="uddi:uddi.org:categorization:types”/> <keyedReference keyName=”uddi-org:types:specification” keyValue="specification" tModelKey="uddi:uddi.org:categorization:types”/> </categoryBag> hacer referencia </tModel> Copyright Springer Verlag Berlin Heidelberg 2004 Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 59 API del registro UDDI o o Tres tipos de clientes Þ Los proveedores de servicio que publican Þ Los clientes que buscan Þ Otros registros que intercambian información Seis conjuntos de APIs 1. Pregunta/Búsqueda de servicio (UDDI Inquiry API): § Para obtener información que satisfaga ciertos criterios • § Para obtener detalles de una entidad específica • § 2. find_business, find-services, find_binding, find_tModel get_bussinesDetail, getServiceDetail, get_bindingDetail, get_tModelDetail Este API es para browsers utilizados por desarrolladores, o por clientes que realizan dynamic binding Publicación de servicio (UDDI Publishers API): § Para proveedores de servicio. Permite añadir, modificar y eliminar entradas. Ejemplo operaciones: • Save_business, save_service, save_binding,save_tModel, delete_service, delete_binding, delete_tModel Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 60 API del registro UDDI 3. Seguridad (UDDI Security API): § Permite a los usuarios UDDI obtener y deshacerse de tokens para ser utilizados en posteriores comunicaciones con el registro: • 4. Custodia y transferencia de pertenencia (UDDI Custody and Ownership Transfer API): § Permite a los registros transferir la custodia de la información entre ellos, y transferir la posesión de estas estructuras de unos a otros: • 5. get_transferToken, transfer_entities, transfer_custody Suscripción (UDDI Suspscription API): § Permite monitorizar los cambios en el registro suscribiéndose al seguimiento de nuevas entradas, modificaciones o eliminaciones de entradas • 6. get_authToken, discard_authToken delete__subscription, get_subscriptionResults, get_subscription, save_subscription Replica (UDDI Replication API): § Soporta la replicación de información en distintos registros, de forma que se pueda sincronizar su información. Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 61 API del registro UDDI cliente servicio SOAP/HTTP API Búsqueda proveedor servicio Se mantiene diferentes puntos de acceso (URIs) para clientes, proveedores y Otros registros •Los clientes no precisan autentificación •Los proveedores y los otros registros si SOAP/HTTPS API Publicación API Publicación interface Servicio Web interface Servicio Web descripciones de servicios API Búsqueda APIs de Suscripción, replicación, y transferencia de custodia (SOAP/HTTPS) Registro UDDI A Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) descripciones de servicios Registro UDDI B Copyright Springer Verlag Berlin Heidelberg 2004 62 Ejemplo de trabajo o Un usuario puede encontrar una descripción WSDL de la siguiente manera 1. Utiliza find_tModel para recuperar una lista de claves tModels (tModel keys) corrrespondientes a entradas wsdlSpec. En el ejemplo se pregunta por todos los servicios de precios de libros que estén en wsdl. <?xml version="1.0"?> <find_tModel generic="1.0" xmlns="urn:uddi-org:api"> <categoryBag> <keyedReference tModelKey="UUID:C25893AF-1977-3528-36B5-4192C2AB9E2C" keyName="uddi-org:types" keyValue="wsdlSpec"/> <keyedReference tModelKey="UUID:A15019C5-AE14-236C-331C-650857AE0221" keyName="book pricing" keyValue="36611349"/> </categoryBag> Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 63 Ejemplo de trabajo 2. Utiliza get_tModelDetail para recuperar los tModels especificados por las descripciones específicas de servicios . 3. Examina el campo overviewDoc para recuperar el contenido del documento WSDL que describe el interface. Proveedor servicio cliente servicio Descripciones WSDL del servicio SOAP/HTTP SOAP/HTTPS API Búsqueda API publicación tModel interface servicio Web businessEntity Copyright Springer Verlag Berlin Heidelberg 2004 Descripciones servicio Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) Registro UDDI businessService bindingTemplate 64 proveedor de servicio Implementación servicio Pasos para publicar un servicio Web server stub 1 Generador WSDL descripción del servicio en WSDL SOAP router compilador WSDL HTTP engine Publicación en UDDI 2 3 businessEntity businessService bindingTemplate API de búsqueda tModel API publicación registro UDDI Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) Copyright Springer Verlag Berlin Heidelberg 2004 65 Bibliografía o Material elaborado a partir del libro y del material que acompaña al libro en http://www2.inf.ethz.ch/~alonso/WebServicesBook.html Web Services Concepts, Architectures and Applications Springer Verlag 2004 ISBN 3-540-44008-9 By Gustavo Alonso, Fabio Casati, Harumi Kuno, Vijay Machiraju o y del libro: Advanced Java 2 Platform - How to program- y del material que lo acompaña en http://www.deitel.com/books/downloads.html by Deitel, Deitel, Satry ISBN: 0130895601 Postgrado Servicios Web, Seguridad Informática y Aplicaciones de Comercio Electrónico Departamento de Informática e Ingeniería de Sistemas (Univ. Zaragoza) 66