280 likes | 384 Views
Aplicaciones Web con Oracle y XML 5 años de experiencias. Univers idad de las Islas Baleares Centro de Tecnologías de la Información (CTI@UIB) Daniel López Janáriz. Objetivos.
E N D
Aplicaciones Web con Oracle y XML5 años de experiencias UniversidaddelasIslas BalearesCentro de Tecnologías de la Información (CTI@UIB) Daniel López Janáriz
Objetivos • Explicar las experiencias adquiridas en el CTI@UIB sobre el desarrollo de aplicaciones web con Oracle, XML y XSLT, mostrando: • Cómo se llegó a la decisión de usar esa técnica • Cómo funciona • La evolución que ha sufrido • Qué ventajas e inconvenientes conlleva • Cómo influye en el modelo de desarrollo • No pretender ser una comparativa exhaustiva de técnicas ni entornos de desarrollo, si no mostrar una alternativa real basada en la experiencia.
Contenidos • Introducción • Orígenes • Implementación de la arquitectura basada en XML y XSL • Evolución de la arquitectura • Metodología • Ventajas e inconvenientes • Conclusiones
Introducción • Las aplicaciones basadas en el navegador son muy habituales para acceder a sistemas basados en Oracle. • Sin embargo, su desarrollo es más costoso que las aplicaciones tradicionales, por varios motivos: • Tecnologías y metodologías inmaduras • Desarrollo en “tiempo Internet” • Requerimientos cambiantes • Múltiples dispositivos, múltiples idiomas • … • Por ello se hace imprescindible utilizar técnicas de desarrollo que nos permitan adaptarnos nuestras aplicaciones fácilmente y controlar un poco todo ese caos. • Una de esas técnicas, es el uso de una arquitectura MVC para tratar las peticiones y el uso de XML/XSL para comunicar las capas y generar la interfaz.
Orígenes • CGI’s + PROC*C • Sencillez. • Problemas de rendimiento bajo cargas elevadas. • Problemas de mantenimiento debido a la dispersión de código y la falta de flexibilidad. • Lógica de aplicación y presentación mezcladas. Lógica de aplicación y presentación HTML CGI Servidor Web … CGI CGI CGI Precompilador + SQL*Net BDD
Orígenes…cont • Servidor de aplicaciones de Oracle, módulo PL/SQL (WAS, OAS, IAS…) • Programación de BDD más sencilla. • Comprobación del esquema de BDD en compilación. • Tecnología propietaria de Oracle. • Lógica de aplicación y presentación mezcladas. Lógica de aplicación y presentación HTML BDD Servidor Web PLSQL Servidor Aplicaciones Oracle PLSQL PLSQL PLSQL Driver nativo + SQL*Net
Orígenes…cont • Servlets + JDBC • Neutra en cuanto a plataforma. • Basada en un estándar con variadas implementaciones. • Problemas de mantenimiento debido a la dispersión de código y la falta de flexibilidad. • Lógica de aplicación y presentación mezcladas. HTML Servidor Web Contenedor de Servlets servlet JDBC + SQL*Net servlet servlet servlet BDD Lógica de aplicación y presentación
Orígenes…cont • La arquitectura Modelo-Vista-Controlador (MVC), o Modelo-Vista-Presentador (MVP), se usa para separar la lógica de la aplicación de su representación en HTML. Presentador Comandos Eventos Selecciones Datos Modelo Vista
Orígenes…cont • JSP1.1 + EJB1.1 • Neutra en cuanto a plataforma. • Basada en un estándar con variadas implementaciones. • Lógica de aplicación y presentación separadas. • Inmadurez de la especificación EJB1.1 -> Problemas de rendimiento y de extensiones propietarias. • Posibles problemas de mantenimiento debido a la dispersión de código. HTML Servidor Web Presentación JSP JSP JSP Contenedor de EJB1.1 JSP Contenedor de Servlets JDBC + SQL*Net BDD EJB RMI EJB EJB EJB Lógica de aplicación
Orígenes…cont • JSP + Beans + JDBC • Neutra en cuanto a plataforma. • Basada en un estándar con variadas implementaciones. • Lógica de aplicación y presentación separadas. • Posibles problemas de mantenimiento debido a la dispersión de código. HTML Servidor Web Presentación JSP JSP JSP JSP Contenedor de Servlets JDBC + SQL*Net Beans BDD Beans Beans Beans Lógica de aplicación
Orígenes…cont • Arquitectura final: Desarrollo en base a XML/XSL: • Generar desde la lógica de negocio, implementada como se desee, documentos XML. • Juntar esos documentos con otros documentos XML auxiliares, en caso necesario. • Procesar el documento XML resultante con una hoja XSL para producir el resultado, o sea la interfaz. HTML XML Procesador XSL Lógica de negocio WML SVG XSLT
Implementación • El LightwEb Applications Framework (WebLEAF) es un entorno para la ejecución de aplicaciones web de tamaño pequeño/mediano. • Surge en 1999 de la necesidad de crear un entorno para no tener que rehacer una serie de tareas en cada aplicación, y ante la falta de alternativas en aquel momento. • Basado en el modelo MVC a través de la técnica del servlet controlador. Evolucionó hacia el desarrollo de aplicaciones con XML y XSL. • Utilizado desde entonces en unas 25-30 aplicaciones web en el CTI@UIB.
Implementación…cont • PLSQL para la lógica de negocio • Detección desvíos lógica-modelo de datos en compilación. • Independiente de sistema operativo. • Formación independiente de web y Java. • XML para la comunicación negocio-vista • Independiente de la implementación de negocio. • Especificación relativamente madura. • Formación independiente de negocio. • Separación total entre capas • Java para unir ambas piezas • Multiplataforma • Facilidades para el desarrollo web • Librerías para acceder tanto a base de datos (JDBC) como a XML (JAXP) y XSLT (TrAX).
Implementación…cont • WebLEAF (PLSQL-XML,XSL) HTML Contenedor de Servlets Tareas auxiliares Java WML Servlet Controlador Java SVG xml BDD xslt xslt xslt Presentación PLSQL xml PLSQL JDBC + SQL*Net xml PLSQL xml xml Lógica de aplicación Ficheros auxiliares
Evolución • Refinamiento del acceso a base de datos para hacerlo más “resistente”. • Mayor flexibilidad en la configuración, incluyendo opciones de localización (tanto por idioma como por dispositivo que accede). • Ampliación de las posibilidades para la implementación de la lógica de negocio y clases auxiliares • EJB2.1 • P.O.J.O. + Hibernate • P.O.J.O. • Generación automática de partes del código a partir del esquema de la BDD.
Evolución…cont • WebLEAF (EJB2.1-XML,XSL) Contenedor de Servlets y EJBs HTML Tareas auxiliares Java Java WML Servlet Controlador SVG EJB xml EJB xslt EJB xslt xslt Presentación JDBC + SQL*Net BDD Lógica de aplicación xml xml xml Ficheros auxiliares
Evolución…cont • WebLEAF (Hibernate-XML,XSL) Contenedor de Servlets HTML Tareas auxiliares Java Java WML Servlet Controlador Java Java SVG Java xml Java xslt Hibernate Java xslt xslt Presentación JDBC + SQL*Net Lógica de aplicación BDD xml xml xml Ficheros auxiliares
Modelo de desarrollo Análisis y Definición de requerimientos Maquetación HTML Maqueta HTML Abstracción de información Modelado de datos y procesos Modelo XML Definición contrato XML Esquema de BDD Interfaz XML Maquetación XSL Implementación de procesos Hojas XSL Configuración entorno Lógica de negocio Esquema BDD Integración y pruebas Esquema BDD XML aux. Hojas XSL Configuración entorno Fuentes XML Aplicación
Ventajas e inconvenientes • A favor • Separación total de la lógica de negocio de la generación de la interfaz. Utilizando la modularidad de XSL se puede mejorar la productividad y la coherencia visual. • Lenguaje para la generación de la interfaz especificado por el W3C, independiente y con múltiples implementaciones. • La separación en capas facilita la generación de interfaces para múltiples dispositivos. • Los servicios web utilizan XML. • La separación en etapas de la metodología facilita la distribución de las tareas y la colaboración de diferentes perfiles. • En contra • Disminución del rendimiento por el procesado de XSLT, solventados con las últimas técnicas de programación. • La creación de hojas XSLT no es lo mismo que la creación de HTML. Por eso hacen falta conocimientos y herramientas diferentes para sacarle todo el partido a la técnica. • No se adapta a según que grupos de trabajo, donde la interfaz la realiza un diseñador gráfico puro. • Falta de soporte de herramientas para facilitar la creación de la interfaz.
Ejemplos de uso I • Aplicación con múltiples idiomas (Contador de accesos a Campus Extens) • Solución • Los literales de la aplicación se extraen en ficheros XML estáticos, un fichero por cada idioma. • Definimos un fichero de propiedades por idioma que indica que fichero XML utilizar. • Utilizamos las facilidades de internacionalización de Java para cargar el fichero de propiedades adecuado según la preferencia del usuario. • El idioma escogido por el usuario se pasa como variable de entorno a la lógica de negocio, para que pueda variar la información a devolver, en caso necesario. En este caso no lo era así que la lógica es la misma. • Sólo hace falta escribir una hoja XSL.
Contador.xsl … <title> <xsl:value-of select=“/ETIQUETAS/@Titulo”/> </title> … Etiquetas_ES.xml Contador_es.properties Titulo=“Contador de acceso” Introduccion=“Bienvenido a…” … Etiquetas.xml= “Etiquetas_ES.xml” … Contador.leaf.conf Etiquetas_CA.xml <INTERNACIONALIZE CONFIG_FILE_NAME=“Contador" /> … <XMLOPERATION XSLT_SOURCE=“Contador.xsl” …> <SOURCE XMLSOURCE=“Etiquetas.xml”/> <SOURCE XMLSOURCE=“plsql://MiPool/MiPaq.Miproc”/> … </XMLOPERATION> … Titulo=“Comptador d’accés” Introduccion=“Benvingut a…” … Contador_ca.properties Etiquetas.xml= “Etiquetas_CA.xml” … Ejemplos de uso I…cont • Aplicación con múltiples idiomas
Ejemplos de uso II • Aplicación accedida desde múltiples dispositivos (Resultados de las PAAU y el proceso de preinscripción) • Solución • Se crea una hoja de estilo por cada dispositivo desde el que se va a acceder: Navegador, móvil por WAP y móvil por SMS. • Se crea un fichero de propiedades por cada dispositivo, que indica que hoja de estilo usar en cada caso. • Se configura el entorno para que detecte el dispositivo que accede y se utilizan las facilidades de internacionalización de Java para cargar el fichero de propiedades adecuado. • La lógica de negocio no sufre ninguna modificación.
Acceso.xsl Acceso_wml.xsl <HTML> … <xsl:value-of select=“/EXPEDIENTE/@Nota”/> … </HTML> <WML> … <xsl:value-of select=“/EXPEDIENTE/@Nota”/> … </WML> Browser_wp.properties Acceso.xsl= “Acceso_wml.xsl” … Ejemplos de uso II…cont • Aplicación accedida desde múltiples dispositivos Acceso.leaf.conf Browser.properties <BROWSERIZE CONFIG_FILE_NAME="Browser"> <BROWSER NAME="WP“ HTTP_ACCEPT="wap“ /> </BROWSERIZE> … <XMLOPERATION XSLT_SOURCE=“Acceso.xsl” …> <SOURCE XMLSOURCE=“plsql://MiPool/MiPaq.Miproc”/> … </XMLOPERATION> … Acceso.xsl= “Acceso.xsl” …
Ejemplos de uso III • Aplicación con múltiples idiomas y múltiples vistas (The WebGuide) • Solución • Se crea un estilo básico para todas las vistas e idiomas, aplicando la técnica de múltiples idiomas del primer ejemplo. • En función del subdirectorio utilizado al acceder, se configura el parámetro «país» además del de idioma. • Para cada vista se extiende la interfaz básica, sobre-escribiendo estilos CSS, reglas de XSL y ficheros auxiliares XML. • Se crea un fichero de propiedades por vista e idioma, indicando que hoja XSL y ficheros auxiliares utilizar. • Se utilizan las facilidades de internacionalización de Java para cargar el fichero de propiedades adecuado en función del idioma y del subdirectorio.
Ejemplos de uso IV • Aplicación con generación dinámica de imágenes y versión estática (El web de la UIB) • Solución para las imágenes • Se crea una operación que devuelve SVG en vez de HTML, y se post-procesa para conseguir imágenes jpg. • Solución para la versión estática • Crear una hoja XSL que sobre-escriba la de la aplicación y genere enlaces estáticos. Configurarla siguiendo la técnica para dispositivos diferentes. • Con una utilidad de WebLEAF, llamar periódicamente a una operación que devuelve la lista de páginas a generar. Llamar a dichas páginas con una cabecera HTTP especial, para que se utilice al generar las hojas la nueva XSL.
Conclusiones • La separación de capas que da XML y XSL facilita la reutilización de código, tanto en negocio como en presentación. A cambio, se complica algo la generación de la interfaz. • Realizar la comunicación en XML permite implementaciones diferentes de la lógica (POJOs, SLSBs, PL/SQL…) • La generación de la interfaz con XSL es más compleja, pero al ser una especificación nos da diferentes implementaciones donde elegir. • Al utilizar XSL hay que prestar atención al rendimiento y no olvidar que estamos haciendo. • La separación en capas sencillas facilita el desarrollo y el mantenimiento de las aplicaciones. • XML/XSL no es LA solución definitiva, si no una técnica más a tener en cuenta.
Gracias por su atención ¿Ruegos y preguntas?
Referencias • Designing Enterprise Applications with the J2EETM Platform, Second Edition, Inderjeet Singh, Beth Stearns, Mark Johnson, Enterprise Team , Addison-Wesley Pub Co , ISBN 0201787903 • Designing Enterprise Applications with the J2EETM Platform, Second Edition (11.1.1 Model-View-Controller Architecture), http://java.sun.com/.../app-arch/app-arch2.html/ • MVP: Model-View-Presenter, Taligent, Inc., Mike Potel, ftp://www6.software.ibm.com/software/developer/library/mvp.pdf • Extensible Stylesheet Language (XSL) Version 1.0, W3C Recommendation 15 October 2001, http://www.w3.org/TR/xsl/ • XSL Transformations (XSLT) Version 1.0, W3C Recommendation 16 November 1999, http://www.w3.org/TR/xslt • XSLT : Programmer's Reference, Michael Kay , Wrox , ISBN 0764543814 • Extensible Markup Language (XML), W3C , http://www.w3.org/XML/ • Extensible Markup Language (XML) 1.0 (Second Edition), W3C Recommendation 6 October 2000, http://www.w3.org/TR/REC-xml • Proyecto WebLEAF, https://webleaf.dev.java.net/