Web Services

  • View
    3

  • Download
    0

Embed Size (px)

DESCRIPTION

Web Services - Intro y Conceptos

Text of Web Services

XML, Servicios Web y Web Semntica

Departamento de Informtica Universidad de Oviedo

Servicios WebAntecedentes y Justificacin SOAP, WSDL, UDDI Utilizacin de Servicios Web Creacin de Servicios Web

Departamento de Informtica Universidad de Oviedo

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

Internet

Servicio WebRespuesta

URL

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

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

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

Servicios Web Principales VocabulariosUDDIra L ist eg SD r W ca bli pu en ob cu tie ne entra W SD L

HTTP

peticin SOAP (XML) Consumidor servicio Web

Implementacin servicio Web

respuesta SOAP (XML)

Servicios Web Arquitectura de AplicacionesDispositivo del Cliente

Base Datos

HTMLLT XS

XMLSOAP Servicio Web

XSLTXS LT

WML

VoiceXML

Servicios Web Arquitectura de AplicacionesFacturacin

SOAP Internet Gestin de Usuarios SOAP

SOAPXML

SOAP

SOAP

Aplicacin del usuario

Conversin de Monedas

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

SOAP FormatoEnvelope Header Header Key Header Key

Body

urgente pepe@oviedo.es familiar con mucho queso

SOAP Ejemplo

Cabecera

Contenido

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

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

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

SOAP Fault soap:Receiver Error al procesar La pizza Barbacoa no puede llevar tanto queso

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

SOAP CodificacinTipos bsicos 234 familiar

SOAP CodificacinEstructurasstruct Pizza { int cdigo; string nombre; }; 234 Barbacoa

Arrays 234 Barbacoa 237 Barbacoa

Arrays parciales

SOAP Codificacin

5 y 6 234 elemento Barbacoa 237 Barbacoa 234 2 y 5 Barbacoa elemento 237 Barbacoa

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 2

SOAP Ejemplo de respuestaHTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: longitud del mensaje 5

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

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

ls suma/*.java ServicioSuma.java ServicioSumaBindingStub.java 4.- Compilar clases generadas > javac suma/*.java ServicioSumaLocator.java ServicioSumaPortType.java

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); } } }

4.- Compilar cliente > javac CienteSuma.java 5.-Ejecutar cliente > java ClienteSuma 2+3=5

Implementacin de un servicio Web Creacin de un clienteEjercicio: Consultar temperatura del aeropuerto de Avils...

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); } } }

Implementacin de Servicios Web Creacin de un Servicio WebMtodo simple: JWSSuma.jwspublic class Suma { public int suma(int a, int b) { return a + b; } }

Almacenar en: \webapps\axis\Suma.jws

http://localhost:8080/axis/Suma.jws

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

Implementacin de Servicios Web Creacin de un Servicio WebServSuma.javapackage ServSuma; public class ServSuma { public int suma(int a, int b){ return (a + b); } }

1.- Compilar servicio > javac ServSuma.java 2.-Copiar ServSuma.class a /webapps/WEB-INF/classes/ServSuma/ServSuma.class Tambin puede dejarse un .jar en WEB-INF/lib

Implementacin de Servicios Web Creacin de un Servicio Webdeploy.wsdd

3.- Desplegar servicio > 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

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

Interoperabilidad Acceso desde .NET a servicio en Java1.- Acceso a WSDL y creacin de Stubs (o proxys)> wsdl http://localhost:8080/axis/services/ServSuma?wsdl ... Writing file 'C:\usr\labra\cursos\XMLInnova\WebServ\ClienteNet\ServSumaService.cs'.

En algunas versiones es necesario editar ServSumaService.cs y modificar this.URL para que incluya el puerto 8080 2.- Compilacin de proxys> csc /t: library ServSumaService.cs

3.- Creacin de cliente

using System;

cliente.cs4.- Compilacin de cliente 5.- Ejecucin> cliente 2+3=5

public class ClienteSumaNet { public static void Main() { ServSumaService srv = new ServSumaService(); Console.WriteLine("2 + 3 = {0}", srv.suma(2,3)); }}

> csc cliente.cs /reference:ServSumaService.cs

Interoperabilidad Se