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