Tema 7:
Tecnologías de Servicios Web
Sistemas Distribuidos
Marcos López Sanz
Índice
Definición y características
Arquitectura SOA de servicios Web
Roles y operaciones
Tecnologías implicadas
Estándares y lenguajes principales
SOAP
WSDL
Otros lenguajes
Tecnologías
ESB
Ejercicios
Dudas
Definición y características
Servicio Web
Definición:
Módulo software auto-contenido (independiente) y auto- descrito disponible a través de una red (como Internet), que completa tareas, resuelve problemas o realiza transacciones de acuerdo a las peticiones de un usuario o aplicación
Ejemplos:
Tarea de negocio auto-contenida
Proceso de negocio completamente desarrollado
Aplicación
Recurso disponible como servicio
Definición y características
Servicios Web. Propiedades
WS son módulos de software débilmente acoplados
Protocolos, interfaces y registros de servicios permiten la coordinación de WS con un alto grado de desacoplamiento
Interfaz independiente de la plataforma, sistema operativo o lenguaje de programación (neutral)
WS encapsulan una funcionalidad discreta de forma semántica
Un WS es una entidad auto-contenida que realiza una única tarea
La interfaz define: las operaciones, los parámetros, los tipos de datos y los protocolos de acceso
WS pueden ser accedidos mediante código y no sólo como interfaz Web
WS pueden ser descubiertos y añadidos a un programa de forma dinámica
WS se describen mediante un lenguaje estándar
Características funcionales y no funcionales
WS se distribuyen a través de Internet
Sobre el protocolo HTTP
Es posible integrarlos en soluciones existentes orientadas a la Web
Definición y características
Servicios Web. Tipos
Simples o de información (informational)
Ofrecen acceso a contenidos (recursos) o permiten el acceso a aplicaciones del lado de servidor
No suelen tener un comportamiento transaccional
Suelen ser sin estado (‘stateless’)
Clasificación:
• Servicios de contenido “puros”: ofrecen información
• Servicios de intercambio simple: ofrecen información obtenida de la agregación de otras fuentes
• Servicios de sindicación de información: permiten acceso a una
funcionalidad externa
Definición y características
Servicios Web. Tipos
Complejos o de negocio (composite)
Ofrecen como funcionalidad el resultado de ensamblar o invocar múltiples servicios de, normalmente, contextos de negocio independientes (diferentes empresas)
Suelen entenderse como coarse-grained servicios
Suelen ser con estado (‘stateful’)
Clasificación:
• Servicios complejos que componen WS programáticos:
ensamblado de otros WS
• Servicios complejos que componen WS interactivos: exponen la
funcionalidad a través de una capa de presentación (browser)
que cuenta con múltiples pasos para realizar una funcionalidad
Definición y características
Servicios Web. Tipos
Según el punto de vista del consumidor:
WS reemplazable
• Necesidad de un servicio de descubrimiento
• Normalmente integrado con la funcionalidad del cliente (no suele cambiar las reglas de comunicación o interfaces)
WS crítico
• Normalmente provisto por un solo proveedor de servicios
• Productividad ligada a la disponibilidad del servicio
Definición y características
Servicios Web. Características
Especificación de requisitos: incluida dentro de la descripción de un servicio
Req. funcionales
• Detalles de cómo se invoca el servicio o de localización
• Centrados en la descripción sintáctica de los mensajes intercambiados
• Foco de atención en la descripción del protocolo de comunicación
Req. no funcionales
• Tiempo de respuesta, seguridad, autorización, fiabilidad, escalabilidad…
• El consumidor debe entender que estas propiedades influyen en la
codificación de los mensajes intercambiados (cabeceras SOAP)
Definición y características
Servicios Web. Características
Estado: mantenimiento del contexto de ejecución entre diferentes invocaciones
El protocolo de acceso al servicio es siempre “sin conexión” (el concepto de sesión no lo maneja el
canal/protocolo de intercambio de mensajes sino el WS)
Opciones:
• Stateless: sin estado
• Stateful: con estado
Definición y características
Servicios Web. Características
Desacoplamiento: grado de dependencia existente entre 2 aplicaciones
El consumidor no tiene constancia del lenguaje de implementación del proveedor, de su plataforma de despliegue, etc.
Tightly coupled vs. Loosely coupled:
Patrón de interacción: síncrono vs. asíncrono
Estilo de mensajes: tipo RPC vs. basado en documentos
Ruta de los mensajes: hard-coded vs. enrutamiento
Plataforma subyacente: homogénea vs. heterogénea
Protocolo de unión (binding): estático vs. dinámico (late binding)
Objetivo: reutilización vs. flexibilidad/aplicabilidad amplia
Definición y características
Servicios Web. Características
Granularidad
Atómicos (simples)
Complejos (estructuras de datos complejas)
Sincronismo
Síncronos (tipo RPC)
• Conversación de ida y vuelta
• Respuesta inmediata requerida
Asíncronos (basados en documentos)
• La idea es que el cliente envía toda la información en un documento compuesto en vez de parámetros simples
Descripción completa
WSDL: mecanismo uniforme para describir interfaces de servicio
abstractas
SOA con Servicios Web
Obtenido de W3.org
SOA con Servicios Web
Operaciones en SOA
Publicar (publish) un servicio de tal forma que los usuarios u otras aplicaciones puedan encontrarlo.
Consta de 2 operaciones:
Describir el servicio. Categorías de información descrita:
• Información de negocio (sobre el proveedor o quien implementa el servicio)
• Información de servicio (sobre la naturaleza del servicio, qué hace)
• Información técnica (sobre detalles de implementación y formas de invocación)
Registrar el servicio:
SOA con Servicios Web
Operaciones en SOA:
Descubrir (find) un servicio
Consta de 2 operaciones:
Descubrir el servicio
• Preguntar al registro por un servicio que “cuadre” con las
necesidades del peticionario (tipo de servicio, rango de precio, productos asociados, etc.)
• En tiempo de ejecución (run-time, dinámicamente) o en tiempo de diseño (diseño)
Seleccionar el servicio:
• Decidir qué servicio invocar
• Métodos: manual (el peticionario lo selecciona manualmente) o
automática (en base a una serie de preferencias pre-establecidas)
SOA con Servicios Web
Operaciones en SOA:
Vincular e interactuar (bind) con un servicio:
El peticionario invoca o inicia una interacción en tiempo de ejecución
Se usan los detalles de descripción del servicio para localizar y contactar con el servicio
Tipos de invocación:
• Directa: usa la información del descriptor de servicio
• Mediación: usa al servicio de descubrimiento (discovery agency)
para intercambiar los mensajes con el servicio
SOA con Servicios Web
Conjunto de lenguajes y tecnologías de WS
Extraído de www.querix.com
SOA con Servicios Web
Lenguajes y tecnologías de WS
Estándares básicos (‘enabling technology standards’):
Sobre los protocolos de Internet (transporte HTTP)
Intercambio de mensajes: XML, XMLSchema
Estándares principales (‘core service standards’)
SOAP (Simple Object Access Protocol):
• Protocolo de mensajes basado en XML utilizado para intercambiar información entre servicios Web
• Implementa un modelo de comunicación pregunta/respuesta
WSDL (Web Service Description Language):
• Forma de especificar los datos, operaciones, contratos y funcionalidades (capabilities) ofrecidas por un servicio Web
• Gramática basada en XML que describe los servicios Web como colecciones de endpoints (puertos remotos) capaces de intercambiar mensajes
UDDI (Universal Discovery, Description and Integration)
• Directorio público que permite la publicación online de servicios (WSDL) y su eventual descubrimiento
SOA con Servicios Web
Conjunto de lenguajes y tecnologías de WS
Estándares de composición y colaboración
Coordinación basada en orquestación de flujos de trabajo (‘composición de servicios’):
• Describe la lógica de ejecución de aplicaciones basadas en servicios Web mediante la definición de sus flujos de control (ejecución condicional, secuencial, paralela o excepcional) y el establecimiento de reglas para gestionar los datos de negocio no observables
• Ejemplo: BPEL (Business Process Execution Language)
Coordinación basada en coreografías (‘colaboración de servicios’):
• Describen colaboraciones de servicios Web (entre empresas) mediante la definición del comportamiento común observable
• Los intercambios de información se producen a través de los puntos de contacto compartidos cuando las reglas de ordenación de mensajes se cumplen
• Ejemplo: WS-CDL (Web Services Choreography Description Language)
SOA con Servicios Web
Conjunto de lenguajes y tecnologías de WS
Otros estándares de composición y colaboración
Coordinación/Transacción:
• Esfuerzos para conseguir interacciones transaccionales entre servicios
• WS-Coordination y WS-Transaction complementan BPEL para ofrecer mecanismos que definan protocolos específicos para
sistemas de procesamiento de transacciones o sistemas de flujos de trabajo
Estándares de valor añadido
• Soportan interacciones de negocio complejas embebidos en SOAP
• Mecanismos de seguridad y autenticación, autorización, confianza,
privacidad, conversaciones seguras, gestión de contratos, etc.
Relación entre lenguajes WS
Extraído de www.querix.com
SOA con Servicios Web
Calidad de Servicio (Quality of Service, QoS)
Definición:
Habilidad de los servicios Web para responder a las invocaciones esperadas y a realizarlas al nivel exigido y acordado por el proveedor y sus consumidores
Medición de QoS:
Se mide el grado en el que las aplicaciones, sistemas,
redes y otros elementos de infraestructura soportan la
disponibilidad de servicios a un determinado nivel de
rendimiento bajo cualquier condición de acceso y carga
SOA con Servicios Web
Calidad de Servicio (Quality of Service, QoS)
Aspectos:
Disponibilidad (availability): ausencia de tiempos en los que el servicio no está disponible (downtimes)
Accesibilidad: grado en el que una petición a un servicio Web es servida. Tasa de éxito de invocación a un servicio
Adecuación a estándares (conformance): grado de cumplimiento de un estándar (especificado en un SLA)
Integridad: grado en el que un servicio Web realiza sus tareas de acuerdo a su descripción WSDL y a los acuerdos especificados en el contrato SLA
Rendimiento:
• Throughput: número de peticiones servidas en un tiempo determinado
• Latencia: tiempo que pasa desde que se envía una petición y se recibe la respuesta
Fiabilidad (reliability): habilidad de un servicio para funcionar correctamente y consistentemente ofreciendo la misma calidad de servicio independientemente de fallos de sistema o red.
Escalabilidad: habilidad para servir peticiones a pesar de las variaciones en el volumen de peticiones
Seguridad: aspectos tales como autenticación, autorización, integridad de mensajes y confidencialidad.
Transaccionalidad
SOA con Servicios Web
Service-Level Agreement (SLA)
Definición:
Contrato formal (agreement) entre un proveedor y un cliente que formaliza los detalles de un servicio Web de tal forma que recoge las expectativas y
entendimientos tanto del proveedor del servicio como del consumidor
‘garantía de QoS’
Posibles contenidos:
Propósito
Implicados
Período de validez
Ámbito
Restricciones
Objetivos de nivel de servicio (indicadores de calidad)
Penalizaciones
Servicios opcionales
Términos de exclusión (lo que no se cubre por el SLA)
Administración (monitorización, autoridad, etc.)
Estándares de Servicios Web
Estándar WSDL 1.1/2.0. Componentes:
WSDL 1.1 WSDL 2.0 Descripción
Service Service Conjunto de funciones que el servicio expone y que son accesibles mediante protocolos de Internet
Port Endpoint Define la dirección (o punto de conexión) a un WS. Normalmente es una URL para acceso HTTP
Binding Binding
Especifica la interfaz y define el tipo de enlazado SOAP (RPC o document) y el protocolo de transporte (protocolo SOAP).
También contiene la definición de las operaciones
PortType Interface Define un servicio Web, las operaciones que pueden realizarse y los mensajes necesarios para realizar dicha operación
Operation Operation Define las acciones SOAP (operaciones) y la forma en la que se codifica el mensaje SOAP
Message n/a
Los mensajes están asociados a las operaciones, contienen información necesaria para invocar la operación.
Cada mensaje está compuesto de una o varias partes lógicas y tiene asociado un tipo determinado (Type en XML Schema)
Types Types Describe el tipo de los datos mediante XML Schema
Ejemplo de
mensaje SOAP
Ejemplo de WSDL
Extraído de Wikipedia
WSDL
Ejemplo de implementación de Servicio Web (JAX)
WSDL
Ejemplo de invocación de un servicio Web desde .Net (uso del paquete org.apache.soap)
String URLString = "http://localhost/WebService1/Service1.asmx";
String TargetNamespace = "http://localhost/WebService1/Service1";
String SOAPAction = "http://Walkthrough/XmlWebServices/sendMessage";
URL url = new URL (URLString);
//Preparar la invocación Call call = new Call();
call.setTargetObjectURI (TargetNamespace);
call.setMethodName ("sendMessage");
call.setEncodingStyleURI (Constants.NS_URI_SOAP_ENC);
Response resp = call.invoke (url, SOAPAction);