Download XML en 5 minutos

Document related concepts
no text concepts found
Transcript
1
2
INGENIERÍA del SOFTWARE
Curso 2004/05
Tema 2:
Arquitecturas Software de varios niveles en
Java
Introducción a los Servicios Web
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
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
2
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
NO HAY RESTRICCIÓN
SOBRE LENGUAJES,
PLATAFORMAS, ETC.
XML
(+) Favorecen la interoperabilidad
(+) Paso a través de firewalls
HTTP
(-) Sin embargo, tipos de datos en las
llamadas son más simples…
CLIENTE
SERVIDOR
Lenguaje JAVA
Interfaces definidas en JAVA
Varias máquinas y S.O.
CORBA
RMI
IIOP
CLIENTE
JRMP / IIOP
CLIENTE
TCP/IP
TCP/IP
SERVIDOR
Varios lenguajes: Java, C++…
SERVIDOR
Interfaces definidas en IDL
Varios lenguajes .NET: C++, C#,
VB.NET …
Interfaces definidas en .NET
Máquinas Windows (?)
Varias máquinas y S.O.
. NET Remoting
CLIENTE
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
(Sustituye a
DCOM)
SERVIDOR
3
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.
Petición
SERVIDOR HTTP
CLIENTE HTTP
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
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
4
8
HTTP en 5 minutos
[85] sisf00 > telnet sipx55.si.ehu.es 8080
Trying 158.227.112.155...
Connected to sipx55.si.ehu.es.
Escape character is '^]'.
GET /iso/jsp/public_html/pagina.jsp HTTP/1.0
Con telnet se puede abrir un socket
interactivo con un servidor HTTP
Con GET se solicita una página web
(en este caso es un JSP)
// Añadir línea en blanco
HTTP/1.0 200 OK
Content -Type: text/ html;charset =windows-1252
Set-Cookie2: JSESSIONID=pjqb72fy21;Version=1;Discard;Path="/iso"
Set-Cookie: JSESSIONID=pjqb72fy21;Path=/ iso
Servlet -Engine: Tomcat Web Server/3.2.3 (JSP 1.1; Servlet 2.2; Java 1.3.1_02;
Windows 2000 5.0 x86; java.vendor =Sun Microsystems Inc.)
El servidor HTTP envía datos (protocolo, código respuesta,
<html>
información sobre el servidor,…)
<head>
<meta http-equiv="Content-Type" content="text/html; charset =windows -1252">
<title> Prueba</title>
</head>
<body>
<h2> Hola null<br>
Y el contenido de la
Estamos a: Tue May 03 13:28:53 CEST 2005
página HTML
</h2>
</body>
</html>
Connection closed by foreign host.
[65] sisf00 >
A. Goñi. Dpto. LSI, UPV/EHU
9
HTTP en 5 minutos
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
5
[107] sisf00 > telnet sipx55.si.ehu.es 8080
Trying 158.227.112.155...
Connected to sipx55.si.ehu.es.
Escape character is '^]'.
POST /iso /jsp/public_html/pagina.jsp HTTP/1.0
Content -type: application/x-www -form-urlencoded
Content -length : 14
10
HTTP en 5 minutosCon el comando POST, se pueden
enviar datos al servidor HTTP.
En este caso es el contenido de un
parámetro, pero en general, puede
ser cualquier fichero.
Nombre=Alfredo
HTTP/1.0 200 OK
Content -Type: text/html;charset=windows-1252
Set-Cookie2: JSESSIONID=crb244gx61;Version=1;Discard;Path="/iso"
Set-Cookie: JSESSIONID=crb244gx61 ;Path=/iso
Servlet -Engine : Tomcat Web Server/3.2.3 (JSP 1.1; Servlet 2.2; Java 1.3.1_02; Wi
ndows 2000 5.0 x86; java.vendor=Sun Microsystems Inc .)
<html>
<head>
<meta http-equiv="Content-Type" content="text /html ; charset=windows -1252">
<title>Prueba</title>
</head>
<body>
<h2> Hola Alfredo<br>
Estamos a: Tue May 03 14:11:01 CEST 2005
</h2>
</body>
</html>
Connection closed by foreign host.
[108] sisf00 >
A. Goñi. Dpto. LSI, UPV/EHU
11
XML en 5 minutos
• XML (eXtensible Markup Language) es
un lenguaje de marcas o etiquetas que
sirve para describir datos
– Definido por el W3C en 1996, a partir de
otro lenguaje: SGML, del cual deriva
también HTML
– HTML es otro lenguaje de marcas
diseñado para mostrar datos
• XML para almacenar, comunicar, no mostrar datos
– Es extensible: se pueden definir nuevas
marcas o etiquetas (tags)
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
6
12
XML en 5 minutos
ENCABEZAMIENTO XML: VERSIÓN Y
CONJUNTO DE CARACTERES
ETIQUETAS: se deben abrir y cerrar
<nombreSala> …</nombreSala>
OBLIGATORIO UN ÚNICO ELEMENTO
RAÍZ: <entradasTodasSalas>
ATRIBUTOS (siempre entre comillas, simples o dobles):
<sala imagen=“principe1.gif”>
ANIDACIÓN DE MARCAS: toda marca que se cierra debe
corresponder a la última marca abierta y no cerrada
En las etiquetas: MAYÚSCULAS ? minúsculas
ETIQUETAS SIN DATOS ASOCIADOS:
<nombreSala/>
Equivalente a:
<nombreSala></nombreSala>
A. Goñi. Dpto. LSI, UPV/EHU
13
XML en 5 minutos
En un navegador
se puede ver el
fichero XML;
abrir y cerrar
“etiquetas”
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
7
14
Documentos XML bien formados vs.
Documentos XML válidos
• Un documento XML está bien formado si cumple
las restricciones anteriores
– No hay nodo raíz, atributos no entre comillas,
mal anidamiento, etc…
• Pero es posible que no sea un documento XML
válido
– Nombres de etiquetas, atributos erróneos
– No aparición de alguna etiqueta obligatoria
–…
• Se puede definir la estructura de un documento
XML usando DTD o XML-Schema
• Qué etiquetas deben/pueden venir, qué
atributos, en qué orden, etc.
A. Goñi. Dpto. LSI, UPV/EHU
15
Llamadas a servicios remotos
usando XML y HTTP
Se puede definir una
estructura de documento
XML que describa una
llamada a un procedimiento
remoto
XML
HTTP
Se usa HTTP para la
transmisión de datos XML
entre las aplicaciones
CLIENTE y SERVIDOR
CLIENTE
SERVIDOR
POST /gestorBilletes HTTP/1.0
Content -type: text/xml
Content -length : XX
Por ejemplo, para
llamar al método
getBillete(nombre),
podríamos hacerlo así:
<?xml version= '1.0' encoding='windows-1252'?>
<llamadaRemota >
<getBillete>
<nombre>Pepe</nombre>
</getBillete>
</llamadaRemota>
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
8
16
Se necesita un estándar para enviar
el mensaje con la llamada remota
Se puede definir una estructura de
documento XML que describa una
llamada a un procedimiento remoto
XML
HTTP
CLIENTE
Se usa HTTP para la
transmisión de datos XML
entre las aplicaciones
CLIENTE y SERVIDOR
SERVIDOR
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
A. Goñi. Dpto. LSI, UPV/EHU
SOAP: Simple Object Access Protocol
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
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
9
18
Formato de un mensaje SOAP
SOAP Envelope
SOAP header
Bloque Header
El mensaje se mete en un sobre (envelope)
El mensaje se compone de una cabecera (header)
OPCIONAL y de un cuerpo (Body)
OBLIGATORIO
Bloque Header
SOAP Body
Bloque Body
La cabecera (header) se utiliza para enviar
información sobre identificadores de
transacciones, certificados de seguridad,
información sobre coordinación, etc.
Bloque Body
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”)
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
nom
10
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 Description
Language
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
11
22
WSDL: Web Services Description
Language
• 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 Description
Language
Documento WSDL
TIPOS DE DATOS USADOS
(los de XML Schema)
DESCRIPCIÓN
ABSTRACTA
DEL SERVICIO
Types
Message
(REQUEST)
Message
(RESPONSE)
Message
(REQUEST)
Message
(RESPONSE)
Operation 2
Operation 1
PARA CADA
OPERACIÓN
SERVICIO ABSTRACTO
(CONJUNTO DE
OPERACIONES)
Interface
DESCRIPCIÓN
CONCRETA
DEL SERVICIO
MENSAJES DE
PETICIÓN Y
RESPUESTA
binding 1
binding 2
binding 3
ENLACES A PROTOCOLOS
DE TRANSPORTE
endpoint 1
endpoint 2
endpoint 3
DIRECCIONES DE LOS
ENLACES
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
Service
TODAS LAS
IMPLEMENTACIONES DEL
SERVICIO
12
24
WSDL
Types
Message
(REQUEST)
Message
(RESPONSE)
Message
(REQUEST)
Message
(RESPONSE)
Operation 2
Operation 1
Interface
binding 1
binding 2
binding 3
endpoint 1
endpoint 2
endpoint 3
A. Goñi. Dpto. LSI, UPV/EHU
Service
25
WSDL: Web Services Description
Language
–
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 enlac es (bindings ) de la misma interfaz
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
types
13
26
WSDL: Web Services Description
Language
–
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
•
•
–
message
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 enlac es (bindings ) de la misma interfaz
A. Goñi. Dpto. LSI, UPV/EHU
27
WSDL: Web Services Description
Language
–
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
operation
patrones de intercambio de mensajes
• Una interfaz que agrupa las operaciones que forman el portType
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 enlac es (bindings ) de la misma interfaz
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
14
28
WSDL: Web Services Description
Language
–
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
•
•
binding
Dirección o punto de acceso ( endpoint) del enlace ( binding)
Descripción de un servicio como una colección de todos los enlac es (bindings) de la misma
interfaz
A. Goñi. Dpto. LSI, UPV/EHU
29
WSDL: Web Services Description
Language
–
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
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
port
service
15
30
Punto de acceso (endpoint)
al SW
A. Goñi. Dpto. LSI, UPV/EHU
31
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
16
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
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
17
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
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
18
Seleccionar los métodos que se
quieren publicar en el SW
36
¡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
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
19
El WSDL se genera automáticamente
38
A. Goñi. Dpto. LSI, UPV/EHU
39
Punto
acceso
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
20
Creamos una clase Java cliente del SW
40
A. Goñi. Dpto. LSI, UPV/EHU
41
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
21
42
Añadimos el código con la
llamada al SW (en Java)
A. Goñi. Dpto. LSI, UPV/EHU
43
Ejecutamos el SW
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
22
44
Ejecutamos el
cliente del SW
A. Goñi. Dpto. LSI, UPV/EHU
45
Y activamos el Monitor TCP
para ver los mensajes SOAP
Tools => TCP Packet Monitor
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU
23
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, WSTransaction, 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?
A. Goñi. Dpto. LSI, UPV/EHU
Ingeniería del Software
A. Goñi, J.R. Zubizarreta, J. Iturrioz
Dpto. LSI. Facultad de Informática. UPV/EHU