Download XML - CTI@UIB

Document related concepts
no text concepts found
Transcript
Aplicaciones Web con Oracle y
XML
5 años de experiencias
Universidad de las Islas Baleares
Centro 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.
2
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
3
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.
4
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
5
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
Servidor Web
Servidor Aplicaciones
Oracle
PLSQL
PLSQL
BDD
PLSQL
PLSQL
Driver nativo +
SQL*Net
6
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
servlet
servlet
servlet
Lógica de aplicación
y presentación
JDBC + SQL*Net
BDD
7
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
Modelo
Datos
Vista
8
Orígenes…cont

JSP1.1 + EJB1.1
+
+
+
–
HTML
–
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.
Presentación
Servidor Web
JSPJSP
JSPJSP
Contenedor de EJB1.1
Contenedor de Servlets
RMI
EJB
EJBEJBEJB
Lógica de aplicación
JDBC + SQL*Net
BDD
9
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
Presentación
Servidor Web
JSPJSP
JSPJSP
Contenedor de Servlets
Lógica de aplicación
Beans
Beans
Beans
Beans
JDBC + SQL*Net
BDD
10
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
WML
Procesador XSL
XML
Lógica
de
negocio
SVG
XSLT
11
Implementació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.
12
Implementación…cont

PLSQL para la lógica de negocio
–
–
–

XML para la comunicación negocio-vista
–
–
–
–

Detección desvíos lógica-modelo de datos en compilación.
Independiente de sistema operativo.
Formación independiente de web y Java.
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).
13
Implementación…cont

WebLEAF (PLSQL-XML,XSL)
Contenedor de Servlets
HTML
Tareas auxiliares
Servlet
Controlador
xml
WML
Java
Java
SVG
Presentación
xslt
xslt
xslt
xml
xml
xml
xml
Ficheros
auxiliares
JDBC +
SQL*Net
PLSQL BDD
PLSQL
PLSQL
Lógica de
aplicación
14
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.
15
Evolución…cont

WebLEAF (EJB2.1-XML,XSL)
Contenedor de Servlets y EJBs
Tareas auxiliares
HTML
Java
Java
Servlet
Controlador
WML
xml
SVG
Presentación
xslt
xslt
xslt
xml
xml
xml
Ficheros
auxiliares
EJB
EJB
EJB
JDBC + SQL*Net
Lógica de
aplicación
BDD
16
Evolución…cont

WebLEAF (Hibernate-XML,XSL)
Contenedor de Servlets
Tareas auxiliares
HTML
Servlet
Controlador
WML
xml
SVG
Presentación
xslt
xslt
xslt
Java
Java
Java
Java
Java
Java
Java
Hibernate
JDBC + SQL*Net
Lógica de
aplicación
xml
xml
xml
Ficheros
auxiliares
BDD
17
Modelo de desarrollo
Análisis y Definición de requerimientos
Maquetación HTML
Maqueta
HTML
Modelado de datos y procesos
Abstracción de información
Definición contrato XML
Modelo
XML
Esquema de BDD
Implementación de procesos
Interfaz
XML
Hojas
XSL
Lógica de
negocio
Esquema
BDD
Maquetación XSL
Configuración
entorno
Integración y pruebas
Aplicación
Fuentes
XML
Esquema
BDD
Configuración
entorno
Hojas
XSL
XML
aux.
18
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.
19
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.
20
Ejemplos de uso I…cont

Aplicación con múltiples idiomas
Etiquetas_ES.xml
Contador.xsl
…
<title>
<xsl:value-of
select=“/ETIQUETAS/@Titulo”/>
</title>
…
Titulo=“Contador de acceso”
Introduccion=“Bienvenido a…”
…
Etiquetas_CA.xml
Titulo=“Comptador d’accés”
Introduccion=“Benvingut a…”
…
Contador.leaf.conf
<INTERNACIONALIZE
CONFIG_FILE_NAME=“Contador"
/>
…
<XMLOPERATION
XSLT_SOURCE=“Contador.xsl”
…>
<SOURCE
XMLSOURCE=“Etiquetas.xml”/>
<SOURCE
XMLSOURCE=“plsql://MiPool/MiPaq.Miproc”/>
…
</XMLOPERATION>
…
Contador_es.properties
Etiquetas.xml=
“Etiquetas_ES.xml”
…
Contador_ca.properties
Etiquetas.xml=
“Etiquetas_CA.xml”
…
21
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.
–
22
Ejemplos de uso II…cont

Aplicación accedida desde múltiples
dispositivos
Acceso.xsl
<HTML>
…
<xsl:value-of
select=“/EXPEDIENTE/@Nota”/>
…
</HTML>
Acceso.leaf.conf
<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_wml.xsl
<WML>
…
<xsl:value-of
select=“/EXPEDIENTE/@Nota”/>
…
</WML>
Browser.properties
Acceso.xsl=
“Acceso.xsl”
…
Browser_wp.properties
Acceso.xsl=
“Acceso_wml.xsl”
…
23
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.
24
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.
–
25
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.
26
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/
28