Conceptos y Aplicaciones bajo un enfoque de Web
Transcripción
Conceptos y Aplicaciones bajo un enfoque de Web
JITT'03 Conceptos y Aplicaciones bajo un enfoque de Web Services Parte I Ing. Juan Carlos Corrales M Grupo de Ingeniería Telemática Universidad del Cauca COLOMBIA Departamento de Telemática Temario 1. 2. 3. 4. 5. 6. 7. Distribución de la Lógica de Aplicación sobre la red Distribución de la Lógica de Aplicación sobre la Web Los Beneficios de los Web Services Arquitectura de los Web Services Protocolos • SOAP (Simple Object Access Protocol) • WSDL (Web Services Description Languaje) • UDDI (Universal Description, Discovery and Integration) • WSFL (Web Services Flow Language) Web Services Vs. Sistemas Distribuidos Tradicionales Web Services --- J2EE Distribución de la Lógica de Aplicación sobre la red 1. CORBA (Common Object Request Broker Architecture) 2. COM/DCOM (Distributed Component Object Model) 3. RMI (Remote Method Invocation) Arquitectura CORBA Distribución de la Lógica de Aplicación sobre la Web -- Antecedentes Pasado: Web de documentos – Páginas estáticas – Web como un enorme repositorio de información – Tecnologías: HTTP + HTML • Presente: Web de aplicaciones – Páginas dinámicamente generadas por aplicaciones web – Aplicaciones exportan su interfaz a los usuarios a través de la Web – Entorno de transacciones comerciales ( Business to consumer , B2C) – Tecnologías: CGI, ASP, PHP, JSP, servlets , ... • Futuro (ya está aquí): Web de servicios (funciones/ métodos)– “Bibliotecas” ofrecen servicios a programas (no a usuarios) – Web como una enorme API de servicios (Web de componentes) – Empresas de valor agregado ( Business to business , B2B) – Base de Sistemas distribuidos sobre Internet • Servicio web: RPC sobre la Web usando XML Distribución de la Lógica de Aplicación sobre la Web -- Antecedentes Evolución: Desarrollo de Aplicaciones en la Web Repositorio Dinámica API Servicios Distribución de la Lógica de Aplicación sobre la Web -- Antecedentes Consideraciones: Aplicaciones Web Durante el desarrollo – aplicaciones críticas • ciclos de vida más cortos – equipos multidisciplinares – ¿son validas las metodologías tradicionales? Durante el mantenimiento – rápida evolución – el cliente ve los fallos Distribución de la Lógica de Aplicación sobre la Web -- Antecedentes Algunos datos Los grandes proyectos Web: • No cumplen las expectativas de negocio: 84% • No disponen de la funcionalidad requerida: 53% • Retraso en el desarrollo: 79% • Sobrepaso del presupuesto: 63% Fuente: Cutter Consortium. Cited at the editorial of the IEEE Multimedia, issue Jan-Feb, 2001 Distribución de la Lógica de Aplicación sobre la Web -- Antecedentes En los últimos años XML ha establecido un marco heterogéneo para Compartir Información sobre la Web XML ha sufrido una evolución desde la simple representación de información estructurada a una posibilidad de Compartir Procesos. Web Services Distribución de la Lógica de Aplicación sobre la Web -- Web Services Son aplicaciones modulares e independientes que pueden ser descritas, publicadas, localizadas e invocadas a través de una red. Componentes que brindan un servicio Disponibles vía Internet Usan protocolos web estándares Interconectan aplicaciones Conectados en forma “débil” Reutilizables Interfaz Operaciones Sistemas Componentes Servicio Los Beneficios de Web Services Web Services Exponer Internet aplicaciones lógicas Proporcionar un alto nivel integración e interoperabilidad sobre de No requiere un conocimiento de la implementación del servicio Los Beneficios de Web Services XML Web Services como solución Consideraciones: Requisitos de interoperabilidad para aplicaciones empresariales que se encuentran en sistemas heterogéneos Requisitos de integración en ambientes que contienen varios sistemas de información empresariales. Tipos de clientes a soprtar (dispositivos móviles, PDA’s) Disponibilidad de herraemientas Empresa Generadora de Planes de Aventura Proveer a los clientes un catalogo con paquetes de aventura Permitir que el cliente personalice su experiencia, acomodación, transporte, calendario de actividades y finalmente haga la reserva de su viaje. Proveer servicios adicionales: estado de la orden y ofrecerle mas información de lugares a visitar Empresa Generadora de Planes de Aventura Módulos Web Services Cliente Standalone Cliente Browser Cliente Handheld Recepción Órdenes Procesamiento Orden Cliente Una plataforma Seguimiento Orden Sistema Gestión Relación Cliente Instituciones Financieras Aerolineas Hoteles Proveedores Actividades Empresa Generadora de Planes de Aventura Beneficios de usar Web Services Integración de los Socios: • No utilización de EDI, facilitando la comunicación con pequeños negocios. • Integración de sistemas existentes en cada asociado, con los sistemas externos. Integración de SI: • No existe inversión (dinero y tiempo) en los SI de cada asociado, con objetivos de adaptación del consorcio. Diversos Clientes Adición de los datos de los asociados • Actualización dinámica de los servicios mediante registro. ADUANA Organismos Estatales Webservices Internet X Agencias Marítimas y Aéreas Mensajes / Seguridad Redes de Valor Agregado VAN M Depósitos L Exportadores Importadores Sistemas Heterogéneos Declarantes Distribución de la Lógica de Aplicación sobre la Web -- Web Services Distribución de la Lógica de Aplicación sobre la Web -- Web Services Entidad solicitante Entidad Proveedora SEMÁNTICA + DESCRIPCIÓN DEL SERVICIO 1. Acuerdo en cuanto a la semántica y la descripción del servicio Semántica + Descripción del servicio Semántica + Descripción del servicio 2. Adapta semántica y descripción del servicio Agente Solicitante 2. Adapta semántica y descripción del servicio 3. Interactúan Agente Proveedor Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) SOAP es un protocolo de comunicación simple y extensible basado en mensajes, que permiten el intercambio de información estructurada y tipeada, entre aplicaciones en un entorno distribuido •Un mensaje es un documento XML •Cabecera de protocolos de Transporte Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) HTTP Header SOAP Envelope Header Body Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) <SOAP-ENV:Envelope xmlns:SOAP-ENV="http: / / s chemas.xml.org /soap /envelope /" SOAPENV:encodingStyle="http: / / schemas.xml.org /soap / encoding /" /> … < / SOAP:Envelope> <SOAP-ENV:Header> <t:transaction SOAP-ENV < / t:transaction> < /SOAP -ENV:Header> xmlns:t="http:/ /www.unicauca.edu.co" :mustUnderstand="1"> Autenticación, autorización, manejo transaccional, trazabilidad y auditoria Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) <SOAP-ENV:Body> <m:Cliente xmlns:m="Some-URI"> <Nombre>Carlos< /Nombre> <Apellido>Orozco< /<apellido> <Ciudad>Popayan< /Ciudad> <Depto>Cauca< /Depto> <Pais>Colombia< /Pais> < /m:Cliente> < /SOAP -ENV:Body> Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) SOAP no define el uso de un protocolo de transporte: FTP (File Transfer Protocol) SMTP (Simple Mail Transfer Protocol) Contenido del mensaje SOAP, es independiente del protocolo que los transporta. Debido a HTTP es el protocolo de transporte más popular en Internet, SOAP describe una convención a usar cuando el transporte se realiza mediante HTTP. Modelo de mensajes request (POST) y response de HTTP. Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) POST / Computer HTTP /1.1 Host: www.unicauca.edu.co Content -Type: charset="utf - 8" Content -Length: 10 text /xml; SOAPAction="http: / / www.unicauca.edu.co#EventManager" Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) Aplicación Cliente SOAP request Servidor Internet SOAP response SOAP - RPC es ortogonal al protocolo usado para el transporte del mensaje SOAP. •La invocación RPC se mapea al request de HTTP. •La respuesta RPC se mapea al response de HTTP. Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) Aplicación Cliente SOAP request Servidor Internet SOAP response Para realizar una invocación RPC es necesaria la siguiente información: •La URI del receptor del mensaje. •El nombre del procedimiento o método. •Los parámetros del procedimiento o método Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) <SOAP-ENV:Body> <m1:RemoteMethodName_1 xmlns:m1="http://example/2001/12/m1_method"> <arg1>valor1</arg1> <arg2>valor2</arg2> </m1:RemoteMethodName_1> <m2:RemoteMethodName_2 xmlns:m2=" http://example/2001/12/m2_method"> <arg1>valor1</arg1> </m2:RemoteMethodName_2> </SOAP-ENV:Body> POST /StockQuote HTTP/1.1 Host: www.example.org Content-Type: text/xml; charset="utf-8" Protocolos: SOAP ( Simple Object Access Protocol ) Content-Length: nnnn SOAPAction: "http://example.org/2001/06/quotes" <SOAP-ENV:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" > < SOAP-ENV:Header> <t:Transaction xmlns:t="http://example.org/2001/06/tx" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding" env:mustUnderstand="1" > </t:Transaction> </SOAP-ENV:Header> <SOAP-ENV:Body > <m:GetLastTradePrice env:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:m="http://example.org/2001/06/quotes" > <m:symbol>DEF</m:symbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope > Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" > <SOAP-ENV:Body> <m:GetLastTradePriceResponse env:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:m="http://example.org/2001/06/quotes" > <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Protocolos: SOAP ( Simple Object Access Protocol ) Proceso del Cliente API SOAP Cliente Aplicación Cliente Invocación a método Respuesta 1 6 SOAP Codificación Decodificación HTTP Codificación Decodificación Codificar la invocación del método en un mensaje SOAP-XML Codificar el mensaje SOAP-XML en un mensaje HTTP Decodificar la respuesta SOAPXML en la respuesta a la invocación del método 2 5 Extraer la respuesta SOAPXML de la respuesta HTTP Mensaje HTTP enviado al servidor SOAP 3 Respuesta HTTP recibido del servidor SOAP 4 Protocolos: SOAP Proceso del Servidor Servidor SOAP Manejador de eventos HTTTP Mensaje HTTP recibido del cliente SOAP 1 Canalizar mensaje al servidor SOAP HTTP / SOAP Codificación y Decodificación SOAP Listener 2 Enviar mensaje al decodificador 3 4 Invocar al método Decodificar el mensaje HTTP y decodificar el mensaje SOAP-XML 5 Aplicación 6 Respuesta HTTP enviada al cliente SOAP 10 Enviar la respuesta al codificador 7 Canalizar la respuesta al Cliente 9 Enviar la respuesta 8 Codificar la respuesta del método en una respuesta SOAP-XML y codificarlo en una respuesta HTTP Protocolos: SOAP (D.S) Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: SOAP ( Simple Object Access Protocol ) Ventajas •Estándar abierto •Simplicidad y extensibilidad •Independiente de plataformas y lenguajes •Interoperabilidad •Firewalls Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: WSDL (Web Services Description Languaje) WSDL es un documento XML que describe la interfaz, semántica y administración de llamada al WS. Las operaciones y los mensajes se describen de forma abstracta y después se enlazan a un protocolo de red y a un formato de mensaje concreto. Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: WSDL (Web Services Description Languaje) •Types: contenedor de definiciones del tipo de datos. •Message: definición abstracta y escrita de los datos que se están comunicando. •PortType: conjunto abstracto de operaciones admitidas por uno o más puntos finales. Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: WSDL (Web Services Description Languaje) Binding: especificación del protocolo y del formato de datos para un tipo de puerto determinado. Service: colección de puntos finales relacionados. Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: WSDL (Web Services Description Languaje) Web Service Requester FIND Socio de negocios u otro sistema 2 Encontrar Web Service UDDI Service equest REQUEST 3 1 4 PUBLISH BIND INVOCAR WS Registrar Web Service SOAP Request (en tiempo de desarrollo RECUPERAR DEFINICIÓN EN WSDL Servlets JAXR SOAP Request Documento WSDL Web Service Provider Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: UDDI (Universal Description, Discovery and Integration ) Es un documento XML usado para describir las entidades de negocio y su Servicio Web. Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: UDDI (Universal Description, Discovery and Integration ) Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: UDDI (Universal Description, Discovery and Integration ) ESTRUCTURAS DE DATOS DEL UDDI Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: UDDI (Universal Description, Discovery and Integration ) Primer paso: Definir la entrada de UDDI •Determine los tModels. •Determine los servicios Web que la empresa ofrece a través de UDDI. •Determine las categorías adecuadas para los servicios •Determine el nombre de la empresa y una breve descripción de la misma en varios idiomas. •Determine las categorías e identificaciones adecuadas para la empresa. North American Industry Classification System (NAICS), Universal Standard Products and Services Codes (UNSPSC), ISO 3166, Standard Industry Classification (SIC) y GeoWeb Geographic Classification. Segundo paso: Registrar la entrada de UDDI Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: UDDI (Universal Description, Discovery and Integration ) UDDI WSDL Implementación del servicio <import> <service> BusinessEntity BusinessService <port> <port> Interfaz del servicio BindingTemplate BindingTemplate <message> <portType> <binding> tModel Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: WSFL (Web Services Flow Language) Se trata de un lenguaje muy sencillo y basado en XML creado por IBM y diseñado exclusivamente para representar flujos de servicios web que faciliten la creación de orquestaciones de estos servicios. Se define como orquestación de servicios web al concepto de recoger un conjunto de servicios web para ofrecer una solución que se adapta a algún proceso de negocio. Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: WSFL (Web Services Flow Language) Las actividades son las tareas a realizar mientras que los proveedores de servicios son los roles encargados da realizar dichas actividades. <flowModelname="peticionCreditoFlow" serviceProviderType="creditosProcesador"> <serviceProvider name="cliente" type="cliente" /> <serviceProvider name="empleado" type="empleado" /> <serviceProfider name="supervisor" type="supervisor" / > <activity name="realizarPeticion" <performedBy serviceProvider="cliente" /> <implement> .. Aquí vendría el servicio web que realizaría la actividad .. < /implement> < /activity> Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: WSFL (Web Services Flow Language) <activity name="validarAvales" /> <performedBy serviceProvider="empleado" / > <implement> .. Aquí vendría el servicio web que realizaría la actividad .. < /implement> < /activity> <activity name="concederCredito" / > <performedBy serviceProvider="supervisor" / > <implement> .. Aquí vendría el servicio web que realizaría la actividad .. < /implement> < /activity> < /flowModel> Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: Seguridad Debe soportar los continuos cambios en las topologías de red y proporcionar un modo de administrar tanto las aplicaciones como las redes de un modo seguro. Diversos estándares como PKI (Public Key Infrastructures), SSL (Secure Sockets Layer) y X509 deben poder ser utilizados para: – firmas digitales, encriptación, autenticación, certificados, etc. Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: Gestión Q Q Dado que los Web Services deben ser sencillos de desarrollar, un entorno de administración puede añadir una complejidad excesiva. 9 Esta complejidad debe ocultarse lo máximo posible. Dicha arquitectura todavía está siendo definida. Distribución de la Lógica de Aplicación sobre la Web -- Web Services Protocolos: Calidad Servicio La capa QoS permite la especificación de información relevante al nivel de implementación: – enlace a través transaccional o SOAP seguro. – duración máxima que el solicitante puede esperar de una respuesta del proveedor. – Etc. Algunos atributos para esta capa están especificados por WSDL mientras que otros actualmente todavía se están definiendo. Distribución de la Lógica de Aplicación sobre la Web -- Web Services Web Services Vs. Sistemas Distribuidos Tradicionales Los servicios web presentan algunas diferencias sobre sistemas distribuidos tradicionales, tales como EJB, COM/DCOM, CORBA, SOM/DSOM o DCE. Algunas de las diferencias son las siguientes ( NOTA: Algunas diferencias sólo afectan a algunos sistemas, no a todos ): •Escaso acoplamiento. El cliente no necesita conocer nada acerca implementación del servicio al que está accediendo, salvo la definición WSDL de la •Independencia del lenguaje de programación. El servidor y el cliente no necesitan estar escritos en el mismo lenguaje •Independencia del modo de transporte. SOAP puede funcionar sobre múltiples protocolos de transoporte, como por ejemplo HTTP, HTTPS, HTTP-R, BEEP, JABBER, IIOP, SMTP o FTP. •Múltiples modos de invocación. Los servicios web soportan tanto invocación estática como invocación dinámica. •Múltiples estilos de comunicación. Los servicios web soportan tanto comunicación síncrona ( RPC ) como comunicación asíncrona ( mensajería ). •Extensibilidad. Al estar basados en XML, los servicios web son fáciles de adaptar, extender y personalizar. Fuente: Oracle 9i Architecture Series Web Services --- J2EE API Java – Web Services Orientadas a Documentos Java API for XML Processing (JAXP) -Procesa documentos XML usando varios parsers. Java Architecture for XML Binding (JAXB) -Procesa documentos XML usando schemaderivados de las clases que componen JavaBeans. Orientada a Procedimientos Java API for XML-based RPC (JAX-RPC) – Envia llamadas a métodos remotos sobre SOAP, a través de Internet. Java API for XML Messaging (JAXM) -- Envia mensajes SOAP sobre Internet. Java API for XML Registries (JAXR) – Provee una via estandar para acceder a la información de registros del negocio. Web Services --- J2EE API Java – Web Services JAX-RPC •En JAX-RPC, una llamada a un procedimiento remoto es representada por un documento XML basado en el protocolo SOAP. •JAX-RPC es no restrictivo: un cliente JAX-RPC puede acceder a un Web service que no necesariamente corre en una plataforma Java. Web Services --- J2EE API Java – Web Services JAXM •Esta API hace posible crear y enviar mensajes XML sobre Internet. •Con el API JAXM, se puede crear mensajes XML soportados en las especificaciones del protocolo SOAP. Web Services --- J2EE API Java – Web Services JAXR Permite a las diferentes aplicaciones desarrolladas en Java, acceder facilmente a una gran variedad de registros XML, describiendo todos los metadatos que se encuentran en el interior de estos documentos. Web Services --- J2EE API Java – Web Services JAXB •Esta API, proporciona a una manera rápida, de crear uniones de dos vías entre los documentos XML y los objetos Java. •Las razón más importante para utilizar JAXB se debe a que las aplicaciones de JAXB están escritas en el lenguaje de programación de Java y pueden procesar datos XML. Web Services --- J2EE Web Services-J2EE Web Services --- J2EE Web Services-J2EE Servidor Web Servidor Aplicaciones Sistema de Gestión de Bases de Datos Enlace documento de entrada a Java Documentos XML JAXB-JAXP JAXM JAX-RPC Enlace Objeto Java a Salida del Documento Cliente\Servicio JAXR Resgistro de Servicios Enterprise JavaBeans JDBC Sistemas Legados JMS Conector J2EE ¿preguntas?