Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. Iturrioz A. Goñi. Dpto. LSI, UPV/EHU 2 Tema 2: Arquitecturas Software de varios niveles en Java Introducción a los Servicios Web INGENIERÍA del SOFTWARE Curso 2004/05 A. Goñi. Dpto. LSI, UPV/EHU 3 Índice • Introducción • HTTP en 5 minutos • XML en 5 minutos • SOAP • WSDL • Usar Servicios Web en JDeveloper • Otros temas
23
Embed
Curso 2004/05 Tema 2: Arquitecturas Software de varios ...
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
2
Tema 2:Arquitecturas Software de varios niveles en Java
Introducción a los Servicios Web
INGENIERÍA del SOFTWARECurso 2004/05
A. Goñi. Dpto. LSI, UPV/EHU
3
Índice
• Introducción• HTTP en 5 minutos• XML en 5 minutos• SOAP• WSDL • Usar Servicios Web en JDeveloper• Otros temas
2
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
4
Introducción: qué es un Servicio Web
• Definición dada por el W3C– A Web service is a software system designed to support
interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards
• Un Servicio Web es – (Parte de) Lógica de negocio
• La interfaz se define en un estándar basado en XML (WSDL)
– Accesible mediante protocolos de Internet• Habitualmente HTTP y SOAP (XML)
A. Goñi. Dpto. LSI, UPV/EHU
5
Introducción: Ventajas de los SW
CLIENTESERVIDOR
HTTP
XML
SERVIDORCLIENTE
JRMP / IIOP
TCP/IP
RMI
CLIENTESERVIDOR
IIOP
TCP/IP
CORBA
Lenguaje JAVA
Interfaces definidas en JAVA
Varias máquinas y S.O.
Varios lenguajes: Java, C++…
Interfaces definidas en IDL
Varias máquinas y S.O.
NO HAY RESTRICCIÓN SOBRE LENGUAJES, PLATAFORMAS, ETC.
CLIENTE
. NET Remoting
SERVIDOR
Varios lenguajes .NET: C++, C#, VB.NET …
Interfaces definidas en .NET
Máquinas Windows (?)
(-) Sin embargo, tipos de datos en las llamadas son más simples…
(Sustituye a DCOM)
(+) Favorecen la interoperabilidad
(+) Paso a través de firewalls
3
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
6
HTTP en 5 minutos
• HTTP es un protocolo Cliente/Servidor de Internet (TCP/IP) del nivel de aplicación, que proporciona servicios de transmisión de datos entre aplicaciones.
CLIENTE HTTP SERVIDOR HTTP
Petición
Respuesta
Ejemplos de comandos en peticiones:
GET Para leer una página Web
POST: Para enviar datos a una página Web
Ejemplos de respuestas:
Estados
Datos
Códigos de error
A. Goñi. Dpto. LSI, UPV/EHU
7
HTTP en 5 minutos
4
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
8
HTTP en 5 minutos[85] sisf00 > telnet sipx55.si.ehu.es 8080Trying 158.227.112.155...Connected to sipx55.si.ehu.es.Escape character is '^]'.GET /iso/jsp/public_html/pagina.jsp HTTP/1.0
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>Prueba</title></head><body><h2> Hola null<br>Estamos a: Tue May 03 13:28:53 CEST 2005</h2></body></html>Connection closed by foreign host.[65] sisf00 >
Con telnet se puede abrir un socketinteractivo con un servidor HTTP
Con GET se solicita una página web(en este caso es un JSP)
Y el contenido de la página HTML
// Añadir línea en blanco
El servidor HTTP envía datos (protocolo, código respuesta, información sobre el servidor,…)
A. Goñi. Dpto. LSI, UPV/EHU
9
HTTP en 5 minutos
5
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
10
HTTP en 5 minutos[107] sisf00 > telnet sipx55.si.ehu.es 8080Trying 158.227.112.155...Connected to sipx55.si.ehu.es.Escape character is '^]'.POST /iso/jsp/public_html/pagina.jsp HTTP/1.0Content-type: application/x-www-form-urlencodedContent-length: 14
Por ejemplo, para llamar al método getBillete(nombre), podríamos hacerlo así:
8
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
16
Se necesita un estándar para enviar el mensaje con la llamada remota
CLIENTESERVIDOR
HTTP
XML
Se usa HTTP para la transmisión de datos XML entre las aplicaciones CLIENTE y SERVIDOR
Se puede definir una estructura de documento XML que describa una llamada a un procedimiento remoto
SIN EMBARGO: el documento XML que describe llamadas a procedimientos remotos debe seguir un estándar si no se quiere construir un servidor distinto cada vez, para que extraiga los métodos y parámetros
SOAP: Simple Object Access Protocol
A. Goñi. Dpto. LSI, UPV/EHU
17
SOAP: Simple Object Access Protocol
• SOAP 1.2 es recomendación W3C desde 24/3/2004 (http://www.w3.org/TR/soap/)
• Define:– Formato de mensajes de comunicación en XML– Cómo debería ser transportado un mensaje vía
Web (HTTP) o e-mail (SMTP)– Reglas que se siguen cuando se procesa un
mensaje SOAP– Cómo se convierte una llamada RPC de un cliente
en un mensaje SOAP, cómo se envía al servidor, cómo se convierte en una llamada RPC en el servidor, cómo se convierte la respuesta en un mensaje SOAP y se devuelve al cliente
9
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
18
Formato de un mensaje SOAP
SOAP Envelope
SOAP header
Bloque Header
SOAP BodyBloque Body
Bloque Header
Bloque Body
El mensaje se mete en un sobre (envelope)
El mensaje se compone de una cabecera (header) OPCIONAL y de un cuerpo (Body) OBLIGATORIO
La cabecera (header) se utiliza para enviar información sobre identificadores de transacciones, certificados de seguridad, información sobre coordinación, etc.
El cuerpo (body) contiene las llamadas a los procedimientos remotos (junto con los parámetros), o bien las respuestas de dichos procedimientos remotos, o bien información sobre el error que se haya producido.
A. Goñi. Dpto. LSI, UPV/EHU
19
Ejemplo de llamada SOAP
getNumBillete(“Pepe”)
nom
10
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
20
Ejemplo de resultado en SOAP
Resultado de la llamada a getNumBillete(“Pepe”)
==> 2 (como int)
A. Goñi. Dpto. LSI, UPV/EHU
21
Se necesita un estándar que describa el Servicio Web
• ¿Cómo saber qué etiquetas XML podemos poner en el mensaje SOAP?<getNumBillete…><nom …>
• Es necesario conocer la definición del servicio Web (esto es, su interfaz)
• Los SW se describen en WSDL
WSDL: Web Services DescriptionLanguage
11
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
22
WSDL: Web Services DescriptionLanguage
• WSDL 1.1 es una Nota W3C desde 15/3/2001 (http://www.w3.org/TR/wsdl/)
• Define:– Una descripción abstracta de un servicio Web
• El sistema de tipos usados para describir los mensajes (basado en XML Schema)
• Mensajes implicados en invocar una operación• Operaciones individuales compuestas de distintos patrones de
intercambio de mensajes• Una interfaz que agrupa las operaciones que forman el servicio
– Una descripción concreta del servicio Web• El enlace (binding) de la interfaz a un protocolo de transporte• Dirección o punto de acceso (endpoint) del enlace (binding)• Descripción de un servicio como una colección de todos los
enlaces (bindings ) de la misma interfaz
A. Goñi. Dpto. LSI, UPV/EHU
23
WSDL: Web Services DescriptionLanguage
Documento WSDL
DE
SCR
IPC
IÓN
A
BST
RA
CT
AD
EL
SE
RV
ICIO
Types
Message (REQUEST)
Message (RESPONSE)
Message (REQUEST)
Message (RESPONSE)
Operation 1 Operation 2
Interface
binding 1
endpoint 1
binding 2
endpoint 2
binding 3
endpoint 3
ServiceDE
SCR
IPC
IÓN
CO
NC
RE
TA
D
EL
SE
RV
ICIO
TIPOS DE DATOS USADOS (los de XML Schema)
PARA CADA OPERACIÓN
MENSAJES DE PETICIÓN Y RESPUESTA
SERVICIO ABSTRACTO (CONJUNTO DE OPERACIONES)
TODAS LAS IMPLEMENTACIONES DEL
SERVICIO
ENLACES A PROTOCOLOS DE TRANSPORTE
DIRECCIONES DE LOS ENLACES
12
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
24WSDL
Types
Message (REQUEST)
Message (RESPONSE)
Message (REQUEST)
Message (RESPONSE)
Operation 1 Operation 2
Interface
binding 1
endpoint 1
binding 2
endpoint 2
binding 3
endpoint 3
Service
A. Goñi. Dpto. LSI, UPV/EHU
25
WSDL: Web Services DescriptionLanguage
types
– Una descripción abstracta de un servicio Web
• El sistema de tipos usados para describir los mensajes (basado en XML Schema)
• Mensajes implicados en invocar una operación• Operaciones individuales compuestas de distintos patrones de intercambio de mensajes• Una interfaz que agrupa las operaciones que forman el servicio
– Una descripción concreta del servicio Web• El enlace (binding) de la interfaz a un protocolo de transporte• Dirección o punto de acceso (endpoint) del enlace (binding)• Descripción de un servicio como una colección de todos los enlaces (bindings) de la misma interfaz
13
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
26
WSDL: Web Services DescriptionLanguage
message
– Una descripción abstracta de un servicio Web• El sistema de tipos usados para describir los mensajes (basado en XML Schema)
• Mensajes implicados en invocar una operación
• Operaciones individuales compuestas de distintos patrones de intercambio de mensajes• Una interfaz que agrupa las operaciones que forman el servicio
– Una descripción concreta del servicio Web• El enlace (binding) de la interfaz a un protocolo de transporte• Dirección o punto de acceso (endpoint) del enlace (binding)• Descripción de un servicio como una colección de todos los enlaces (bindings) de la misma interfaz
A. Goñi. Dpto. LSI, UPV/EHU
27
WSDL: Web Services DescriptionLanguage
– Una descripción abstracta de un servicio Web• El sistema de tipos usados para describir los mensajes (basado en XML Schema)• Mensajes implicados en invocar una operación
• Operaciones individuales compuestas de distintos patrones de intercambio de mensajes
• Una interfaz que agrupa las operaciones que forman el servicio
– Una descripción concreta del servicio Web• El enlace (binding) de la interfaz a un protocolo de transporte• Dirección o punto de acceso (endpoint) del enlace (binding)• Descripción de un servicio como una colección de todos los enlaces (bindings) de la misma interfaz
portType
operation
14
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
28
WSDL: Web Services DescriptionLanguage
– Una descripción abstracta de un servicio Web• El sistema de tipos usados para describir los mensajes (basado en XML Schema)• Mensajes implicados en invocar una operación• Operaciones individuales compuestas de distintos patrones de intercambio de mensajes• Una interfaz que agrupa las operaciones que forman el servicio
– Una descripción concreta del servicio Web
• El enlace (binding) de la interfaz a un protocolo de transporte
• Dirección o punto de acceso (endpoint) del enlace ( binding)• Descripción de un servicio como una colección de todos los enlaces (bindings) de la misma
interfaz
binding
A. Goñi. Dpto. LSI, UPV/EHU
29
WSDL: Web Services DescriptionLanguage
– Una descripción abstracta de un servicio Web• El sistema de tipos usados para describir los mensajes (basado en XML Schema)• Mensajes implicados en invocar una operación• Operaciones individuales compuestas de distintos patrones de intercambio de mensajes• Una interfaz que agrupa las operaciones que forman el servicio
– Una descripción concreta del servicio Web• El enlace (binding) de la interfaz a un protocolo de transporte
• Dirección o punto de acceso (endpoint) del enlace (binding)• Descripción de un servicio como una colección de todos los
enlaces (bindings ) de la misma interfaz
port
service
15
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
30
Punto de acceso (endpoint) al SW
A. Goñi. Dpto. LSI, UPV/EHU
31
16
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
32
RESULTADO
Mensaje SOAP con la
respuesta
A. Goñi. Dpto. LSI, UPV/EHU
33
Usar SW en JDeveloper
• Afortunadamente, los distintos entornos ofrecen herramientas y asistentes que generan los WSDL y SOAP de manera automática, a partir de clases implementadas en distintos Leng. Prog.
• Los programadores pueden seguir trabajando con sus lenguajes y plataformas habituales
• JDeveloper, en concreto, lo permite
17
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
34
Crear un SW en Java
A. Goñi. Dpto. LSI, UPV/EHU
35
Se selecciona la clase Java para la que se quiere crear el SW
18
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
36Seleccionar los métodos que se quieren publicar en el SW
¡Cuidado! No se pueden crear SW para métodos cuyos tipos no sean los básicos, String,
Date, Calendar,… o Array[] de ellos
A. Goñi. Dpto. LSI, UPV/EHU
37
Se indica la dirección del punto de acceso
19
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
38
El WSDL se genera automáticamente
A. Goñi. Dpto. LSI, UPV/EHU
39
Punto acceso
20
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
40Creamos una clase Java cliente del SW
A. Goñi. Dpto. LSI, UPV/EHU
41
21
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
42
Añadimos el código con la llamada al SW (en Java)
A. Goñi. Dpto. LSI, UPV/EHU
43
Ejecutamos el SW
22
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
44
Ejecutamos el cliente del SW
A. Goñi. Dpto. LSI, UPV/EHU
45
Y activamos el Monitor TCP para ver los mensajes SOAPTools => TCP Packet Monitor
23
Ingeniería del Software A. Goñi, J.R. Zubizarreta, J. IturriozDpto. LSI. Facultad de Informática. UPV/EHU
A. Goñi. Dpto. LSI, UPV/EHU
46
Mensaje SOAP con la petición
Mensaje SOAP con la respuesta
A. Goñi. Dpto. LSI, UPV/EHU
47
Otros temas
• UDDI (Universal Description, Discovery and Integration)– Es un directorio distribuido donde las empresas pueden registrar,
eliminar y buscar servicios web.– Empresas como IBM, Microsoft, etc. mantienen nodos con esa
información.• Se pretende construir una infraestructura para construir
aplicaciones integrando servicios web entre empresas (B2B)• Herramientas para traducir de WSDL a un lenguaje (Java,
lenguaje .NET, …)– Apache AXIS proporciona compiladores Java a WSDL y de WSDL
a Java• Definición de otros estándares como WS-Coordination, WS-
Transaction, WS-Routing– ¿Qué pasa si se quiere reservar un viaje completo?
• Reservar vuelo => Usando SW• Reservar hotel => Usando SW• ¿Y si quisiéramos que fuera una transacción?