Aplicaciones Web con Oracle y XML 5 años de experiencias
description
Transcript of Aplicaciones Web con Oracle y XML 5 años de experiencias
Aplicaciones Web con Oracle y XMLAplicaciones Web con Oracle y XML5 años de experiencias5 años de experiencias
UniversUniversidadidad dede laslas Islas BalearesIslas BalearesCentro de Tecnologías de la Información (CTI@UIB)Centro de Tecnologías de la Información (CTI@UIB)
Daniel López Janáriz
2
ObjetivosObjetivos
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.
3
ContenidosContenidos
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
4
IntroducciónIntroducció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.
5
OrígenesOrí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.
CGI
HTML
Servidor Web
BDD
CGICGI
CGI
…
Lógica de aplicacióny presentación
Precompilador + SQL*Net
6
OrígenesOrígenes…cont…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.
BDD
PLSQL
HTML
Servidor AplicacionesOracle PLSQL
PLSQL
PLSQL
Lógica de aplicacióny presentación
Servidor Web
Driver nativo +SQL*Net
7
OrígenesOrígenes…cont…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.
Contenedor de Servlets
servlet
BDD
servletservletservlet
Lógica de aplicacióny presentación
JDBC + SQL*Net
HTML
Servidor Web
8
OrígenesOrígenes…cont…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.
Modelo Vista
Presentador
Datos
Comandos Eventos
Selecciones
9
OrígenesOrígenes…cont…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.
Contenedor de EJB1.1
EJBBDD
EJBEJBEJB
Lógica de aplicación
JDBC + SQL*Net
HTML
Servidor Web
Contenedor de Servlets
JSPJSPJSPJSP
Presentación
RMI
10
OrígenesOrígenes…cont…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
Contenedor de Servlets
JSPJSPJSPJSP
Beans BDDBeansBeansBeans
Lógica de aplicación
JDBC + SQL*Net
Presentación
11
Orígenes…Orígenes…contcont
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.
SVG
XMLLógica
denegocio
WML
HTML
Procesador XSL
XSLT
12
ImplementaciónImplementación
El Light wEb 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.
13
ImplementaciónImplementación…cont…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).
14
ImplementaciónImplementación…cont…cont
WebLEAF (PLSQL-XML,XSL)
ServletControlador Java
Java
Lógica deaplicación
Presentación
SVG
WML
HTML
xsltxslt
xslt
BDD
PLSQL
PLSQL
PLSQL
xmlxml
xml
Tareas auxiliares
JDBC +SQL*Net
Contenedor de Servlets
Ficherosauxiliares
xml
xml
15
EvoluciónEvolució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.
16
EvoluciónEvolución…cont…cont
WebLEAF (EJB2.1-XML,XSL)
ServletControlador
EJBEJB
EJB
JDBC + SQL*NetPresentación
SVG
WML
HTML
xsltxslt
xslt
BDDxml
xmlxml
Lógica de aplicación
Contenedor de Servlets y EJBs
Ficherosauxiliares
xml
JavaJava
Tareas auxiliares
17
EvoluciónEvolución…cont…cont
WebLEAF (Hibernate-XML,XSL)
ServletControlador
JavaJava
Java
JDBC + SQL*NetPresentación
SVG
WML
HTML
xsltxslt
xslt
BDDxml
xmlxml
Lógica de aplicación
Contenedor de Servlets
Ficherosauxiliares
xml
JavaJava
Tareas auxiliares
JavaJava
Hibernate
18
Modelo de desarrolloModelo de desarrolloAnálisis y Definición de requerimientos
Maquetación HTML
Abstracción de informaciónModelado de datos y procesos
Definición contrato XML
Esquema de BDD
Maquetación XSL Implementación de procesos
MaquetaHTML
ModeloXML
InterfazXML
HojasXSL
ConfiguraciónentornoLógica de
negocio
Integración y pruebas
HojasXSL
Configuraciónentorno
XMLaux.Fuentes
XML
EsquemaBDD
EsquemaBDD
Aplicación
19
Ventajas e inconvenientesVentajas 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.
20
Ejemplos de uso IEjemplos 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.
21
Ejemplos de uso IEjemplos de uso I…cont…cont
Aplicación con múltiples idiomas
Titulo=“Contador de acceso”Introduccion=“Bienvenido a…”…
Etiquetas_ES.xml
Titulo=“Comptador d’accés”Introduccion=“Benvingut a…”…
Etiquetas_CA.xml
Etiquetas.xml=“Etiquetas_ES.xml”
…
Contador_es.properties
Etiquetas.xml=“Etiquetas_CA.xml”
…
Contador_ca.properties
…<title><xsl:value-ofselect=“/ETIQUETAS/@Titulo”/></title>…
Contador.xsl
<INTERNACIONALIZE CONFIG_FILE_NAME=“Contador"/>…<XMLOPERATION XSLT_SOURCE=“Contador.xsl”…><SOURCEXMLSOURCE=“Etiquetas.xml”/><SOURCEXMLSOURCE=“plsql://MiPool/MiPaq.Miproc”/>…</XMLOPERATION>…
Contador.leaf.conf
22
Ejemplos de uso IIEjemplos 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.
23
Ejemplos de uso IIEjemplos de uso II…cont…cont
Aplicación accedida desde múltiples dispositivos
Acceso.xsl=“Acceso.xsl”
…
Acceso.xsl=“Acceso_wml.xsl”
…
Browser_wp.properties
<HTML>…<xsl:value-ofselect=“/EXPEDIENTE/@Nota”/>…</HTML>
Acceso.xsl
<BROWSERIZE CONFIG_FILE_NAME="Browser"> <BROWSER NAME="WP“
HTTP_ACCEPT="wap“ /></BROWSERIZE>…<XMLOPERATION XSLT_SOURCE=“Acceso.xsl”…><SOURCEXMLSOURCE=“plsql://MiPool/MiPaq.Miproc”/>…</XMLOPERATION>…
Acceso.leaf.conf
<WML>…<xsl:value-ofselect=“/EXPEDIENTE/@Nota”/>…</WML>
Acceso_wml.xsl
Browser.properties
24
Ejemplos de uso IIIEjemplos 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.
25
Ejemplos de uso IVEjemplos 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.
26
ConclusionesConclusiones 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ónGracias por su atención
¿Ruegos y preguntas?
28
ReferenciasReferencias 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/