Web Services

  • Published on
    13-Nov-2014

  • View
    2

  • Download
    0

Embed Size (px)

DESCRIPTION

Web Services - Intro y Conceptos

Transcript

<p>XML, Servicios Web y Web Semntica</p> <p>Departamento de Informtica Universidad de Oviedo</p> <p>Servicios WebAntecedentes y Justificacin SOAP, WSDL, UDDI Utilizacin de Servicios Web Creacin de Servicios Web</p> <p>Departamento de Informtica Universidad de Oviedo</p> <p>Servicios Web Posible definicinAplicaciones auto-contenidas, auto-descritas que pueden ser publicadas, localizadas e invocadas a travs de la Web Una vez desarrolladas, otras aplicaciones (y otros servicios Web) pueden descubrirlas e invocar el servicio dadoPeticin</p> <p>Internet</p> <p>Servicio WebRespuesta</p> <p>URL</p> <p>Servicios Web Factores que influyeron en su aparicinComputacin Distribuida: RPC, CORBA, RMI, DCOM Sistemas fuertemente acoplados Integracin de aplicaciones: EAI (Enterprise Application Integration) Reaccin frente a sistemas ERP monolticos Aparicin de XML Adopcin por principales industrias XML-RPC Necesidad de intercambios B2B Sistemas de integracin EDI, RosettaNet, ebXML Comercio electrnico y burbuja de Internet Necesidad de nuevas frmulas Microsoft vs. Java Compatibilidad</p> <p>Servicios Web ObjetivosIndependencia del lenguaje y de la plataforma Separacin de especificacin de la implementacin Interoperabilidad Utilizacin de estndares: XML, SOAP, WSDL, UDDI... Acoplamiento dbil: Sistemas basados en mensajes Interacciones sncronas y asncronas A travs de Internet Sin control centralizado Utilizacin de Protocolos establecidos Consideraciones de seguridad Modularidad y Reusabilidad de servicios Escalabilidad: Aplicaciones uno-a-uno frente a uno-a-muchos</p> <p>Servicios Web Principales VocabulariosProtocolo de transporte HTTP/HTTPs (principalmente) Codificacin de datos y mensajes SOAP (Simple Object Access Protocol) Descripcin del servicio WSDL (Web Service Description Language) Bsqueda y localizacin de servicios UDDI (Universal Discovery, Description and Integration) Otra definicinProgramas accesibles en Internet que esponen su funcionalidad recibiendo/enviando mensajes SOAP a travs de HTTP(s) y describen su interfaz en WSDL</p> <p>Servicios Web Principales VocabulariosUDDIra L ist eg SD r W ca bli pu en ob cu tie ne entra W SD L</p> <p>HTTP</p> <p>peticin SOAP (XML) Consumidor servicio Web</p> <p>Implementacin servicio Web</p> <p>respuesta SOAP (XML)</p> <p>Servicios Web Arquitectura de AplicacionesDispositivo del Cliente</p> <p>Base Datos</p> <p>HTMLLT XS</p> <p>XMLSOAP Servicio Web</p> <p>XSLTXS LT</p> <p>WML</p> <p>VoiceXML</p> <p>Servicios Web Arquitectura de AplicacionesFacturacin</p> <p>SOAP Internet Gestin de Usuarios SOAP</p> <p>SOAPXML</p> <p>SOAP</p> <p>SOAP</p> <p>Aplicacin del usuario</p> <p>Conversin de Monedas</p> <p>SOAP EvolucinSOAP: Define el formato de los mensajes SOAP = Simple Object Access Protocol Aunque tiene poco de objetos... Evolucin Desarrollado a partir de XML-RPC SOAP 1.0 (1999), 1.1 (2000), 1.2 (2002) Participacin inicial de Microsoft Adopcin posterior de IBM, Sun, etc. Aceptacin industrial</p> <p>SOAP FormatoEnvelope Header Header Key Header Key</p> <p>Body</p> <p> urgente pepe@oviedo.es familiar con mucho queso </p> <p>SOAP Ejemplo</p> <p>Cabecera</p> <p>Contenido</p> <p>SOAP Formato generalSOAP especifica el formato de mensajes Es independiente del protocolo de transporte Aunque se define un enlace (binding) con HTTP envelope: Pueden especificarse datos globales (codificacin, espacios de nombres, etc.) Contiene: header (opcional) + body (obligatorio) body contiene datos en formato XML header contiene meta-informacin Extensiones obligatorias/opcionales</p> <p>SOAP Headerheader incluye informacin sobre el mensaje Facilita futuras extensiones Seguridad, transacciones, etc. Informacin procesable por intermediarios Atributos pre-definidos mustUnderstand (true/false) Si el elemento no puede procesar dicha informacin devuelve un error actor Indica qu nodo debe procesar la informacin Si no aparece, debe procesarla el nodo receptor final</p> <p>SOAP Faultfault: Formato predefinido de mensajes de error Se incluye el elemento fault en el cuerpo Subelementos predefinidos faultcode: Cdigo del error Predefinidos: VersionMismatch, MustUnderstand, DTDNotSupported, DataEncodingUnknown, Sender, Receiver faultstring: Explicacin legible por personas detail: Informacin especfica de la aplicacin Puede contener elementos XML faultactor: URI del nodo que caus el error</p> <p>SOAP Fault soap:Receiver Error al procesar La pizza Barbacoa no puede llevar tanto queso </p> <p>SOAP CodificacinAtributo encodingStyle define reglas de codificacin Algunos tipos bsicos predefinidos Enteros, cadenas, flotantes Contiene reglas especficas para: Estructuras Arrays Referencias Se complementa con XML Schemas Pueden definirse otros sistemas de codificacin</p> <p>SOAP CodificacinTipos bsicos 234 familiar </p> <p>SOAP CodificacinEstructurasstruct Pizza { int cdigo; string nombre; }; 234 Barbacoa </p> <p>Arrays 234 Barbacoa 237 Barbacoa </p> <p>Arrays parciales</p> <p>SOAP Codificacin</p> <p> 5 y 6 234 elemento Barbacoa 237 Barbacoa 234 2 y 5 Barbacoa elemento 237 Barbacoa </p> <p>SOAP Ejemplo con HTTPPOST /Suma/Service1.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: longitod del mensaje SOAPAction: "http://tempuri.org/suma" 3 <b>2</b></p> <p>SOAP Ejemplo de respuestaHTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: longitud del mensaje 5 </p> <p>WSDL EvolucinWSDL (Web Services Description Language) Describe: Qu puede hacer el servicio Dnde reside Cmo invocarlo Vocabulario basado en capas Es posible concentrarse en una capa cada vez Evolucin: Iniciativa conjunta de Ariba, IBM y Microsoft(2001) Propuesto a W3C como recomendacin (WSDL 1.1) (2003) En desarrollo WSDL 2.0</p> <p>WSDL Estructura del documentodefinitions types message portType binding port serviceTipos de datos usados en los mensajes (XML Schema) Definicin abstracta de los datos transmitidos. Conjunto de operaciones abstractas Protocolo concreto y especificaciones de los formatos de las operaciones del mensaje Especifica una direccin para el enlace definiendo un nico punto de destino Coleccin de puntos de destino</p> <p> ls suma/*.java ServicioSuma.java ServicioSumaBindingStub.java 4.- Compilar clases generadas &gt; javac suma/*.java ServicioSumaLocator.java ServicioSumaPortType.java</p> <p>Implementacin de servicios Web Creacin de un clienteClienteSuma.javaimport suma.*; public class ClienteSuma { public static void main(String[ ] args) throws Exception { try { ServicioSumaLocator loc = new ServicioSumaLocator(); ServicioSumaPortType p = loc.getServicioSumaPort(); System.out.println("2 + 3 = " + p.suma(2,3)); } catch (Exception e) { System.err.println("Excepcin: " + e); } } }</p> <p>4.- Compilar cliente &gt; javac CienteSuma.java 5.-Ejecutar cliente &gt; java ClienteSuma 2+3=5</p> <p>Implementacin de un servicio Web Creacin de un clienteEjercicio: Consultar temperatura del aeropuerto de Avils...</p> <p>http://live.capescience.com/wsdl/GlobalWeather.wsdl ClienteTemp.javapublic class ClienteTemp { public static void main(String args[]) throws Exception { try { GlobalWeather_ServiceLocator loc = new GlobalWeather_ServiceLocator(); GlobalWeather_Port s = loc.getGlobalWeather(); System.out.println("Temperatura en Aeropuerto de Asturias: " + s.getWeatherReport("LEAS").getTemperature().getString()); } catch (Exception e) { System.err.println("Excepcin: " + e); } } }</p> <p>Implementacin de Servicios Web Creacin de un Servicio WebMtodo simple: JWSSuma.jwspublic class Suma { public int suma(int a, int b) { return a + b; } }</p> <p>Almacenar en: \webapps\axis\Suma.jws</p> <p>http://localhost:8080/axis/Suma.jws</p> <p>Implementacin de Servicios Web Creacin de un Servicio WebUtilizar JWS tiene sus limitaciones Debe disponerse del cdigo fuente Los errores aparecen en tiempo de ejecucin La clase no puede tener package Slo se pueden transferir datos simples No se puede configurar el servicio Mtodo riguroso: WSDD (Web Service Deployment Descriptor) Permite desplegar (deploy) y quitar (undeploy) servicios Pueden utilizarse servicios compilados Control de las Conversiones de tipos</p> <p>Implementacin de Servicios Web Creacin de un Servicio WebServSuma.javapackage ServSuma; public class ServSuma { public int suma(int a, int b){ return (a + b); } }</p> <p>1.- Compilar servicio &gt; javac ServSuma.java 2.-Copiar ServSuma.class a /webapps/WEB-INF/classes/ServSuma/ServSuma.class Tambin puede dejarse un .jar en WEB-INF/lib</p> <p>Implementacin de Servicios Web Creacin de un Servicio Webdeploy.wsdd </p> <p>3.- Desplegar servicio &gt; java org.apache.axis.client.AdminClient deploy.wsdd Processing file deploy.wsdd Done processing Puede ser necesario reiniciar servidor 4.- Acceder a http://localhost:8080/axis/services/ServSuma</p> <p>Implementacin de Servicios Web Otras caractersticas de AxisInvocacin dinmica Dynamic Invocation Interface Invocacin mediante Proxy Conversin Java2WSDL Permite generar WSDL a partir de clases/interfaces Java Generacin de ficheros WSDD para deploy/undeploy Seguridad Otros protocolos de transporte</p> <p>Interoperabilidad Acceso desde .NET a servicio en Java1.- Acceso a WSDL y creacin de Stubs (o proxys)&gt; wsdl http://localhost:8080/axis/services/ServSuma?wsdl ... Writing file 'C:\usr\labra\cursos\XMLInnova\WebServ\ClienteNet\ServSumaService.cs'.</p> <p>En algunas versiones es necesario editar ServSumaService.cs y modificar this.URL para que incluya el puerto 8080 2.- Compilacin de proxys&gt; csc /t: library ServSumaService.cs</p> <p>3.- Creacin de cliente</p> <p>using System;</p> <p>cliente.cs4.- Compilacin de cliente 5.- Ejecucin&gt; cliente 2+3=5</p> <p>public class ClienteSumaNet { public static void Main() { ServSumaService srv = new ServSumaService(); Console.WriteLine("2 + 3 = {0}", srv.suma(2,3)); }}</p> <p>&gt; csc cliente.cs /reference:ServSumaService.cs</p> <p>Interoperabilidad Servicios Web en .NET</p> <p>Interoperabilidad Servicios Web en .NET</p> <p>Interoperabilidad Servicios Web en .NET</p> <p>Arquitecturas Orientadas a Servicios DefinicinSOA = Service Oriented Architectures Construccin de aplicaciones partiendo de interfaces, con el objetivo de desarrollar agentes dbilmente acoplados que se comunican entre s. Ejemplo</p> <p>Un tocadiscos es un servicio... ...le pasamos un disco y suena msica</p> <p>En POO se encapsulan datos y procesos ...un disco incluira su tocadiscos...</p> <p>Arquitecturas Orientadas a Servicios Modelo tradicionalDatos IVA</p> <p>Algoritmos IVA Algoritmos Envo Aplicacin Fuente datos Tiempo de construccin Tiempo de configuracin Compilacin</p> <p>Aplicacin Integrada</p> <p>datos envo Tiempo de ejecucin</p> <p>Arquitecturas Orientadas a Servicios Modelo Orientado a Serviciosservicio clculo IVA</p> <p>Aplicacin</p> <p>Compilacin</p> <p>Aplicacin Integrada</p> <p>servicio gastos envo Tiempo de construccin Tiempo de ejecucin</p> <p>Arquitecturas Orientadas a Servicios Principales caractersticasImportancia de las interfaces Descripcin rigurosa de interfaces (legibles por mquinas) Recomendacin: Partir de WSDL + XML Schema Modelos dbilmente acoplados Sistemas de comunicacin asncrona Estilo documento vs. estilo RPC Colas de mensajes Ej. Solicitar un libro Interoperabilidad Independencia de lenguajes y plataformas Adaptacin de arquitecturas ya existentes Utilizacin de estndares Modelo REST vs SOAP</p> <p>Servicios Web RetosGestin de servicios Web WSDM - Web Services Distribution Management Agregacin de servicios Ejemplo. Reserva de avin + hotel Evolucin de los servicios Cambio de la Interfaz Modelizacin de procesos de negocios BPEL - Business Process Execution Language Contratos, facturacin Quin gana dinero? Qu pasa cuando algo falla? Seguridad y fiabilidad XML Security Calidad de servicios Tiempos de respuesta, soporte, monitorizacin, etc.</p> <p>Web para ordenadores? ... no confundir con Web semntica Nueva arquitectura? ...en realidad, usan arquitecturas ya existentes Obligarn a cambiar de plataformas? ... es posible incorporar sistemas heredados Lengua universal para las aplicaciones? ...no proporcionan semntica, slo una sintaxis comn Nuevo modelo de negocios? ...el negocio es el servicio, no la forma en que se suministra Ventaja competitiva? ...peligro de adoptar tecnologa inmadura. Enlace automtico a socios desconocidos? ...modelo de negocio no desarrollado Estndares bien definidos? ...algunos se estn desarrollando y otros ni siquiera se han desarrollado Es lo mismo que .NET? ...Independiente de plataforma...</p> <p>Servicios Web Mitos...</p> <p>Ms informacinwww.wsindex.org Informacin de servicios Web y Web semntica www.searchwebservices.com Portal de servicios Web orientado a empresas www.webservices.org Sobre servicios Web www.xmethods.net Lista de servicios Web www.soapware.org Portal sobre SOAP www.w3c.org/2002/ws Especificaciones relacionadas con servicios Web</p> <p>Repaso... Tecnologas XMLDefinicin de XML DTD Namespaces XML Schema Transformacin de XML XSL = XSLT + XPath + XSL-FO Vocabularios XML XHTML, MathML, SVG, SMIL, WML, VoiceXML Tratamiento de XML SAX, DOM, JAXP, JAXB Transporte de XML: Servicios Web SOAP, WSDL, UDDI</p>