Title: Aplicaciones Web con Oracle y XML 5 a
1Aplicaciones Web con Oracle y XML5 años de
experiencias
Universidad de las Islas BalearesCentro de
Tecnologías de la Información (CTI_at_UIB) Daniel
López Janáriz
2Objetivos
- Explicar las experiencias adquiridas en el
CTI_at_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.
3Contenidos
- 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
4Introducció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.
5Orígenes
- CGIs PROCC
- 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 SQLNet
BDD
6Orígenescont
- 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 SQLNet
7Orígenescont
- 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 SQLNet
servlet
servlet
servlet
BDD
Lógica de aplicación y presentación
8Orígenescont
- 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
9Orígenescont
- 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 -gt
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
Contenedor de EJB1.1
JSP
JSP
Contenedor de Servlets
JDBC SQLNet
BDD
EJB
RMI
EJB
EJB
EJB
Lógica de aplicación
10Orígenescont
- 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 SQLNet
Beans
BDD
Beans
Beans
Beans
Lógica de aplicación
11Orígenescont
- 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
Lógica de negocio
Procesador XSL
WML
SVG
XSLT
12Implementació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_at_UIB.
13Implementacióncont
- 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).
14Implementacióncont
HTML
Contenedor de Servlets
Tareas auxiliares
Java
WML
Servlet Controlador
Java
SVG
xml
BDD
xslt
xslt
Presentación
xslt
PLSQL
xml
PLSQL
JDBC SQLNet
PLSQL
xml
xml
xml
Lógica de aplicación
Ficheros auxiliares
15Evolució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.
16Evolucióncont
Contenedor de Servlets y EJBs
HTML
Tareas auxiliares
Java
WML
Java
Servlet Controlador
SVG
EJB
xml
EJB
xslt
EJB
xslt
Presentación
xslt
JDBC SQLNet
BDD
Lógica de aplicación
xml
xml
xml
Ficheros auxiliares
17Evolucióncont
- WebLEAF (Hibernate-XML,XSL)
Contenedor de Servlets
HTML
Tareas auxiliares
Java
WML
Java
Servlet Controlador
Java
Java
SVG
Java
xml
Java
xslt
Hibernate
Java
xslt
Presentación
xslt
JDBC SQLNet
Lógica de aplicación
BDD
xml
xml
xml
Ficheros auxiliares
18Modelo 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
Hojas XSL
XML aux.
Configuración entorno
Fuentes XML
Aplicación
19Ventajas 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.
20Ejemplos 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.
21Ejemplos de uso Icont
- Aplicación con múltiples idiomas
22Ejemplos 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.
23Ejemplos de uso IIcont
- Aplicación accedida desde múltiples dispositivos
Acceso.leaf.conf
Browser.properties
ltBROWSERIZE CONFIG_FILE_NAME"Browser"gt
ltBROWSER NAME"WP HTTP_ACCEPT"wap
/gt lt/BROWSERIZEgt ltXMLOPERATION
XSLT_SOURCEAcceso.xsl gt ltSOURCE XMLSOURCEpls
ql//MiPool/MiPaq.Miproc/gt lt/XMLOPERATIONgt
Acceso.xsl Acceso.xsl
24Ejemplos 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.
25Ejemplos 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.
26Conclusiones
- 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.
27Gracias por su atención
28Referencias
- 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/develo
per/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/