Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e...

30
Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java Enterprise Servicios Web Sesión 1: Introducción a los Servicios Web

Transcript of Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e...

Page 1: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-1

Especialista en Aplicaciones y Servicios Web con Java Enterprise

Servicios Web

Sesión 1:Introducción a los Servicios Web

Page 2: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-2

¿Qué es un Servicio Web?Arquitectura de los Servicios WebSeguridadTecnologías básicasTecnologías J2EE para Servicios Web

Índice

Page 3: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-3

¿Qué es un Servicio Web?Arquitectura de los Servicios WebSeguridadTecnologías básicasTecnologías J2EE para Servicios Web

Introducción a los Servicios Web

Page 4: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-4

Componentes software

El diseño del software tiende a ser cada vez más modular

Aplicaciones compuestas por componentes reutilizables• P.ej. Objetos CORBA o EJBs

Estos componentes pueden encontrarse distribuidos

ComponenteUnidad de la que se componen las aplicacionesOfrece una determinada interfaz y cumple ciertos requisitosDeberá poder ser integrado en la aplicación y combinado con otros componentes de forma independiente.

Page 5: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-5

Descripción de Servicio Web

Un Servicio Web es un componente al que se podráacceder mediante protocolos Web estándar

Los mensajes para invocar el servicio se codifican en XMLEstos mensajes se pueden transportar utilizando HTTP

Normalmente constará de una interfaz (conjunto de métodos) que podremos invocar de forma remota desde cualquier lugar de la red

Nos permiten crear aplicaciones distribuidas en Internet

Son independientes de la plataforma y del lenguaje de programación en el que estén implementados

Page 6: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-6

Web “para humanos” vs. “para máquinas”

Petición HTTP

Respuesta HTTP en HTML

AplicaciónAplicación

Petición HTTP

Respuesta HTTP en XMLOtras aplicaciones

Page 7: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-7

Características de los servicios

Deben ser accesibles a través de la WebDebe utilizar protocolos de transporte estándares como HTTP y codificar los mensajes en un lenguaje estándar (XML).

Deben describirse a si mismosDe esta forma una aplicación podrá conocer cuál es la interfaz del servicio, y podrá integrarlo y utilizarlo de forma automática.

Deben ser localizables Debe existir algún mecanismo de localizar un servicio que realice una determinada función, sin tenerlo que conocer previamente el usuario.

Page 8: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-8

¿Qué es un Servicio Web?Arquitectura de los Servicios WebSeguridadTecnologías básicasTecnologías J2EE para Servicios Web

Introducción a los Servicios Web

Page 9: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-9

Arquitectura funcional

Registro

ProveedorCliente

Busca Publica

Invoca

Page 10: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-10

Arquitectura de protocolos

Transporte de Servicios(HTTP, SMTP, FTP, BEEP, ...)

Mensajería XML(SOAP, XML-RPC)

Descripción de Servicios(WSDL)

Localización de Servicios(UDDI)

Page 11: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-11

¿Qué es un Servicio Web?Arquitectura de los Servicios WebSeguridadTecnologías básicasTecnologías J2EE para Servicios Web

Introducción a los Servicios Web

Page 12: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-12

Confidencialidad

La información contenida en los mensajes SOAP puede ser confidencialSolución:

Como los mensajes se envían por HTTP, podemos encriptarlos con SSL

Problema:Si el mensaje debe atravesar una cadena de servicios, debe ser desencriptado dentro de cada uno de ellos• Los datos estarán inseguros dentro de cada nodo

Solución: • Desencriptar sólo la parte concerniente a cada nodo

Page 13: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-13

Autentificación

Podemos necesitar identificar al usuarioPara prestarle un servicio personalizadoPara comprobar si tiene permiso para usar el servicioEtc...

Solución:Utilizar autentificación HTTP

Problema:Si utilizamos servicios de distintos servidores, tendremos que autentificarnos para cada uno por separadoSolución:• Crear contexto compartido donde puedan consultar información

sobre la autentificación (P.ej. .NET Passport, Sun Liberty)

Page 14: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-14

Seguridad en la red

Se invocan procedimientos remotos mediante HTTP

Protocolo diseñado para extracción de documentosLos firewalls permiten el paso de este tipo de peticiones

No se puede cortar el acceso a estos puertos

Problema de seguridadDebemos tener en cuenta que cualquiera va a poder utilizar estos servicios

Page 15: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-15

¿Qué es un Servicio Web?Arquitectura de los Servicios WebSeguridadTecnologías básicasTecnologías J2EE para Servicios Web

Introducción a los Servicios Web

Page 16: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-16

SOAP

Protocolo derivado de XMLSe usa para intercambiar informaciónDos tipos:

Mensajes orientados al documento• Cualquier tipo de contenido

Mensajes orientados a RPC• Tipo más concreto que el anterior• Nos permite realizar llamadas a procedimientos remotos

– La petición contiene el método a llamar y los parámetros– La respuesta contiene los resultados devueltos

Nos centraremos en el segundo tipo

Page 17: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-17

Elementos de SOAP

Sobre SOAP (Envelope). Contiene:• Descripción del mensaje (destinatario, forma

de procesarlo, definiciones de tipos)• Cabecera (opcional) y cuerpo SOAP

Cabecera SOAP (Header). Contiene:• Información sobre el mensaje (obligatorio,

actores, etc)

Cuerpo SOAP (Body). Contiene:• Mensaje (en caso de RPC la forma del mensaje

se define por convención)• Error (opcional)

Error SOAP (Fault)• Indica en la respuesta que ha habido un error

en el procesamiento de la petición

Page 18: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-18

Elementos de SwA

Con SOAP podemos intercambiar cualquier documento XML, pero no otro tipo

Por ejemplo, una imagen.

SwA (SOAP with Attachment) nos permite añadir datos que no sean XML al mensajeParte adjunta (Attachment)

Contiene los datos no XML

Page 19: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-19

Ejemplo SOAP

<SOAP-ENV:Envelopexmlns:SOAP-ENV=

"http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle=

"http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body>

<ns:getTemperatura xmlns:ns="http://j2ee.ua.es/ns"> <area>Alicante</area>

</ns:getTemperatura> </SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Page 20: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-20

WSDL

Lenguaje derivado de XMLDescribe la interfaz de los Servicios Web

Operaciones disponiblesParámetros de las operacionesResultados devueltosTipos de datos de estos parámetros y resultados

Además contiene la dirección del endpointURL a la que hay que conectarse para acceder al servicio

Nos permite integrar un servicio automáticamente en nuestra aplicación, o que otros usuarios utilicen los servicios que hayamos desarrollado nosotros

Page 21: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-21

Elementos WSDL

<definitions>

<types> tipos de datos, si no son primitivos

<message> llamadas y respuestas SOAP

<portType> operaciones: llamada + respuesta

<binding> datos SOAP

<service> URL del servicio

Page 22: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-22

Elementos de WSDL lógicos

El elemento raíz del documento es definitions, contiene:

types: Tipos de datos que se intercambian

message: Mensajes que se intercambian durante la invocación de las operaciones. Cada operación tendrá un mensaje de entrada (petición) y uno de salida (respuesta)

portType: Define las operaciones que ofrece el servicio. Cada una tendrá un mensaje de entrada y salida de los anteriores

Page 23: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-23

Elementos de WSDL físicos

binding: Indica protocolo y formato para los mensajes anteriores. El formato puede ser:• Orientado al documento• Orientado a RPC

service: Define el servicio mediante una colección de puertos a los que acceder. • Cada puerto tendrá una URL para acceder al endpoint. • Además contiene documentación en lenguaje natural sobre el

servicio.

Page 24: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-24

UDDI

UDDI nos permite localizar Servicios WebDefine la especificación para construir un directorio distribuido de Servicios Web

Se registran en XML

Define una API para acceder a este registroBuscar serviciosPublicar servicios

La interfaz de UDDI está basada en SOAPSe utilizan mensajes SOAP para buscar o publicar servicios

Page 25: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-25

¿Qué es un Servicio Web?Arquitectura de los Servicios WebSeguridadTecnologías básicasTecnologías J2EE para Servicios Web

Introducción a los Servicios Web

Page 26: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-26

JAXP

Permite procesar documentos XML en JavaTiene en cuenta espacios de nombresSoporta XSLT

Podemos transformar XML a otros formatos

Librería para tratar XML genéricoOtras librerías se apoyan en esta para procesar tipos concretos de lenguajes derivados de XML• SOAP• WSDL• UDDI

Page 27: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-27

JAXM

Mensajería XML orientada al documentoTrabaja con mensajes SOAP y SwA

Nos permiteExtraer el contenido de los mensajes XML recibidosCrear y enviar mensajes XML• Síncrona (petición-respuesta)• Asíncrona (envío sin esperar respuesta)

Se divide en dos APIsSAAJ: API independiente y suficiente para:• Crear mensajes SOAP y extraer información de ellos• Envío síncrono de mensajes

JAXM: API dependiente de SAAJ. Incorpora:• Envío asíncrono de mensajes

Page 28: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-28

JAX-RPC

Infraestructura para hacer RPC mediante XMLUtiliza mensajes SOAP orientados a RPC

Depende de SAAJ, pero no de JAXMSAAJ se encarga de • Construir y enviar los mensajes• Recibir y analizar los mensajes

Nos permitirá:Invocar Servicios Web de tipo RPCCrear nuestros propios Servicios Web RPC • A partir de clases Java que implementan su funcionalidad

Page 29: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-29

JAXR

Permite acceder a registros XMLUDDIebXML

Utiliza una API estándar JavaSe accede de la misma forma a cualquier tipo de registro

PermiteConsultar el registroPublicar servicios en el registroEliminar o modificar los servicios publicados

Page 30: Servicios Web Sesión 1: Introducción a los Servicios Web · 2010-07-30 · Ciencia Computación e IA Introducción a los SW-1 Especialista en Aplicaciones y Servicios Web con Java

Servicios Web © 2003-2004 Depto. Ciencia Computación e IA Introducción a los SW-30

JAXB y WSDL4J

JAXBPermite asociar esquemas XML a clase JavaConvierte los tipos de datos utilizados en el servicio:• Unmarshalling

– XML Objeto Java• Marshalling

– Objecto Java XML

Java API for WSDL (WSDL4J)Analiza y construye documentos WSDLPodemos consultar la interfaz de un servicio a partir de su documento WSDL• Permitirá integrar servicios en tiempo de ejecución