| |
 |
|
| |
|
|
|
|
|
| |
conceptos para una arquitectura multicanal |
|
|
|
|
| |
Definición de una
plataforma abierta, integradora, modular,
evolutiva … enfocada hacia el concepto de canal
de distribución independizando la tecnología
del negocio y la presentación.
Plataforma multicanal:
-
La información
llega a cualquier lugar: canales de distribución.
-
Información
fiable: la misma para todos los canales.
-
Rapidez y eficiencia:
tanto en el desarrollo como integración de
nuevos canales.
-
Usability: sencillez
en el uso para todos los usuarios.
-
Interés:
información actualizada y útil el
usuario debe sentirse identificado por la información
mostrada (personalización).
Información dependiente del
cliente no de la tecnología del canal, el canal
es sólo un medio de difusión, no debe
condicionar la información.
Rápida adaptación a
la evolución tecnológica desenfrenada
mediante una arquitectura abierta, escalable, modular
y reutilizable al máximo.
Clientes:
-
Personalización
interactiva de la información deseada
-
Fuente única
de información de usos y hábitos del
cliente
-
Análisis
exhaustivos de los datos del cliente
-
Oferta personalizada
-
Actualización
permanente de la información
|
|
|
|
|
|
filosofía Aplication Service Provider |
|
|
|
| |
PADKernel potencia la competitividad
de los productos finales en una arquitectura Java
multicapa, multiempresa, multientorno,
multicanal, multidispositivo, multiusuario
y multiidioma bajo un entorno J2EE
100%.
Se obtienen ventajas de centralización del
conocimiento, mejora del desarrollo, escalabilidad,
seguimiento de los proyectos y plataforma de lanzamiento
de proyectos innovadores y competitivos. Además,
sirve para utilizar y gestionar de forma transparente
para los desarrolladores las infraestructuras de sistemas
(web servers, aplications servers,
sistemas de ficheros, bases de datos, etc.) que necesiten
para los proyectos finales, optimizando si es posible,
la velocidad de acceso final.
Se minimiza al máximo la instalación
en los dispositivos client side. En el caso
de los navegadores web, será seguramente nula,
y en los dispositivos PDA y móviles
requerirá una instalación mínima
excepto terminales más avanzados como PocketPCs
que dispongan de navegadores realmente funcionales.
Dicha capa se crea siempre con un motor de presentación
J2ME utilizando la definición client
provisioning J2EE con un modulo para asegurar
la entrega de las conexiones. En los dispositivos
menos abiertos con .NET o C++, aunque
esto último puede suponer un aumento de coste.
Se ofrecen productos definidos previamente por proyectos,
la versatilidad de la arquitectura será uno
objetivo claro y por este motivo debe estar orientada
a componentes y conectores lo que simplifica su desarrollo
en diferentes fases.
Para cada producto se pueden ofrecer al cliente múltiples
servicios tanto a nivel de negocio como de sistema
(estadísticas, guardias, etc.), pudiendo seleccionar
cual de ellos interesan.
El objetivo final es la disponibilidad 7x24, 99,9999%
32 segundos de desconexión al año (sumando
todas las paradas).
|
|
|
|
|
|
caracterísitcas generales de la arquitectura padkernel |
|
|
|
| |
Multicapa: Se
implementa un patrón MVC (modelo, vista, controlador)
basado en una definición server side X-Forms
de la W3C. Este modelo separa perfectamente
la implementación de negocio de la presentación
y con controladores o filtros para los diferentes
protocolos: HTTP/S en un principio y Web Services
en las sucesivas fases de desarrollo. El modelo X-Forms
sirve para mantener transparente el acceso en dos
sentidos: de los diferentes canales al negocio y del
backend al negocio. La capa de presentación
XSLT y/o JSP, pudiéndose añadir más
tipos de presentación si son necesarios.
Multiempresa y multientorno: Existe
un gestor de configuración que permite al framework
realizar una coexistencia de diferentes empresas y
entornos de dichas empresas, manteniendo una única
implementación por servicio de negocio.
Multicanal y multidisposivo: El mismo
gestor de configuración permite abrir dichas
empresas y entornos a los diferentes canales y los
dispositivos de dichos canales, manteniendo una única
implementación por servicio de negocio y múltiples
presentaciones las cuales gestiona un módulo
de presentación independiente a través
de la configuración.
Multiidioma: El gestor de presentación
dispone de una colección de los posibles literales
por idioma que soporte cada presentación por
empresa, entorno, canal y dispositivo, gestionados
a través de un gestor independiente que utiliza
a su vez la información de la configuración.
Multiplataforma: La instalación
de la plataforma puede hacerse tanto en entornos Windows
como Linux/Unix, preferiblemente estos últimos
y a poder ser en un entorno multiprocesador o emulando
un multiprocesador con la tecnología HyperThreading
de Intel. Sistemas en cluster y sistemas con balanceo
de carga inteligente (SmartStubs, p.ej.) en una infraestructura
romboidal de máquinas con un gestor que mantiene
segura la información contenida en los contextos
de usuarios (solución escalable vertical y
horizontalmente).
Multiusuario:
La concurrencia de múltiples usuarios es un
aspecto crítico para la disponibilidad del
sistema y aunque la plataforma Java y por extensión
los servidores de aplicaciones proporcionan este aspecto
de base, la arquitectura está encargada de
velar por este aspecto basándose en una estrategia
de optimización máxima de componentes.
|
|
|
|
|
| |
Procesos de negocio:
Coordinan el flujo de información del proceso
que se ejecuta. Tras la ejecución se recogen
los resultados y se dejan en un objeto para que sean
recogidos por la presentación que se encarga
de mostrarla. Los procesos de negocio se encargan
de indicar cual es la presentación que funcionalmente
resuelve la petición del usuario. A continuación
el Gestor de la Presentación seleccionará
la presentación correspondiente.
Gestor de Datos: Formatea la
información para ser procesada por los sistemas
externos (HOST, bases de datos, BackEnd)
que deberán tratarla. Devuelven la respuesta
formateada a los Procesos de negocio. El gestor datos
gestiona la relación con los conectores.
Conectores: Gestores de la comunicación
con los sistemas externos (TCP-IP, SNA, etc.),
conexión con servidores (HTTP/S, XML,
etc.), Bases de datos (PostgreSQL, Oracle), etc.
Gestor de la Presentación:
Determina exactamente cual es el elemento de presentación
a utilizar. Recibe como entrada la "presentación
funcional" determinada por el Controller y evalúa
los parámetros que pueden fijar una presentación
u otra. Por ejemplo : Canal, empresa, idioma, dispositivo,
etc.
|
|
|
|
|
| |
-
Controlador del
flujo de ejecución X-form de peticiones
multicanal.
-
Gestor de contexto.
-
Gestor de configuración.
-
Los componentes
de definición del que extiendan todos los
componentes de negocio.
-
El gestor de
presentación.
-
Utilidades básicas
de caché y tratamiento XML Schema y XML.
-
Gestor de ficheros
de log.
-
Pool de conexiones
de Bases de Datos.
Todos estos
componentes se montan en una única máquina
con sistema operativo Linux y bajo un web container
Tomcat, ambos de contrastado prestigio y fiabilidad.
No se utilizará un application container
porque se prescindirá el uso de EJB. |
|
|
|
|
|
FASE 2 modelo server side X-Form completo y gestor de transacciones |
|
|
|
| |
Modelo de recolección de
datos de entrada multicanal X-Form en los siguientes
puntos:
-
Estructura de
datos de petición de ida y vuelta.
-
Asociación
(asignación) dato de entrada-dato de la estructura
de entrada predefinida de la petición.
-
Validación
de la estructura, prototipo de datos y reglas de
negocio complejas bajo un modelo de autómata
XML (esta última no incluida en la primera
fase).
Se crea, reaprovechando los componentes el primer
punto un gestor de transacciones Backend
basado en un pseudo-modelo adaptado XMLForms con los
siguientes componentes:
-
Estructura de
transacciones de ida y vuelta.
-
Asociación
datos de ida-dato resultado transacción.
-
Validación
de la estructura, prototipo de datos y reglas de
negocio complejas bajo un modelo de autómata
XML.
Se realizan pruebas
de estrés y las mejoras derivadas de los resultados
de esas pruebas en todos los gestores, sobretodo en
el caché y los logs.
Se mejora la configuración implementando sistema
multiproperties basado en XML.
Se procede a
la integración con OpenGIS para los proyectos
de localización. |
|
|
|
|
|
FASE 3 Client Provisioning |
|
|
|
| |
Para las aplicaciones que se visualicen
a través de navegadores se potencian los componentes
genéricos y reutilizables basados en JavaScript.
Estos canales sólo requieren esfuerzos a nivel
de presentación pero estos no se deben subestimar
ya que bien diseñados y gestionados pueden
colaborar en gran medida a potenciar la velocidad
de acceso y la riqueza de las aplicaciones cliente.
Para las aplicaciones que se instalen en dispositivos
cliente se crea un gestor de versiones y aprovisionamiento
de aplicaciones cliente basándose en la especificación
client provisioning J2EE (enterprise
edition) y particularmente en las especificaciones
definidas para J2ME (micro edition) tanto
para perfiles CDC (client device connected)
y CLDC (cliente limited device connected).
Las aplicaciones se basan en un motor de presentación
ligero y un módulo que asegure la entrega de
las peticiones de dichos aplicativos tanto bajo HTTP
como en conexiones seguras HTTPS.
Se procede a la creación
de un gestor de seguridad configurable que corte el
paso para IP’s invalidas, gestión de
certificados, etc.
|
|
|
|
|
|
FASE 4 balanceo de carga, repositorio de contextos y herramientas de gestión |
|
|
|
| |
Para poder escalar la arquitectura
a nivel de sistemas se crea un repositorio de contextos
de usuario que se encarga de asegurar que el balanceo
de carga no repercuta en excesivo tráfico de
información y tiempo de latencia en entornos
cluster, por un lado y que sólo permite guardar
información en estos contextos a aquellos datos
que hayan sido autorizados por los perfiles más
cualificados, para impedir que los desarrolladores
no utilicen de forma ordenada este recurso.
Se crea un balanceador de carga inteligente.
Implementamos los siguientes componentes de gestión
de la arquitectura:
-
Administración
de configuración remota.
-
Gestor de estadísticas
remota.
-
Módulo
de monitorización.
Se
procede a escalar vertical y horizontalmente las infraestructuras
de sistemas. |
|
|
|
|
|
FASE 5 Content Management System (CMS) |
|
|
|
| |
Para
aumentar la velocidad de respuesta de los aplicativos
finales y mejorar la velocidad de desarrollo de dichos
proyectos se implementan los componentes necesarios
para la creación de un CMS. Para ello será necesario
crear un gestor de recursos de presentación y
literales remoto.
•El
tener un CMS supone simplificar la arquitectura de
sistemas ya que muchos recursos de sistema, como por
ejemplo web servers tipo Apache, pueden dejar
de tener utilidad.
|
|
|
|
|
| |
X-Forms es una especificación
del W3C como resultado de la redefinición
de los formularios HTML. Si nos damos cuenta
todos los aspectos de la programación web
han evolucionado mucho excepto la definición
de los formularios que no se ha movido ni un milímetro
de la definición que se les dio inicialmente.
La nueva especificación de formularios sirve
para dar respuesta a varias necesidades:
-
Adaptarse a la
redefinición XHTML 1.0.
-
Separar el tratamiento
de formularios de la presentación.
-
Solucionar el
problema de afrontar arquitecturas multicanal.
La nueva especificación define un XForm en
tres partes:
-
Esqueleto XML
de la petición: podemos lanzar una estructura
de datos todo lo compleja que queramos mediante
un esqueleto XML que definamos.
-
Asociación
de campos de presentación de entrada (Inputs)
con los nodos del esqueleto: XML Binding.
-
Validación
de datos pre-envio: XML Validation.
La nueva especificación además define
dos posibles implementaciones:
-
Client side:
para aquellos navegadores que soporten dicha definición.
-
Server side:
para poder migrar a este tipo de estructuras sin
afectación para los canales que no soporten
tecnologías tan potentes. Nosotros elegimos
esta opción para nuestra arquitectura.
Para
implementar los server side XForms utilizaremos
las librerías JAX-P y JAX-B (Java Api for
XML Processing and Binding). La primera define
las interfaces necesarias para utilizar el estándar
SAX para la lectura y tratamiento de XML
y la segunda para tratamiento en memoria y transformación
XML-Java y Java-XML. Esta última
librería además de proporcionar interfaces
tipo JavaBean de árboles de objetos
que equivalen a la estructura de datos que define un
XML, es capaz de aplicar validaciones complejas
tanto a nivel de tipo de datos como validaciones más
complejas definidas por un XSD (XML Schema).
Las implementaciones utilizadas serán por un
lado Xerces del proyecto apache para JAX-P
y la implementación de referencia de Sun
de JAX-B. Comentar que JAX-B es la apuesta
de Sun para la creación de objetos complejos
Java a partir de una definición XMLSchema estándar
. Mediante estas dos tecnologías tenemos a nuestra
disposición las herramientas necesarias para
implementar una arquitectura basada en XForms solucionando
la problemática del multicanal. |
|
|
|
|
| |
STRUTS es uno de los proyectos
Open Source de la organización Apache Jakarta
de más influencia e impacto en la implementación
de framework’s basados en el paradigma
MVC. Sencillo, ligero, escalable y extensible separa
perfectamente la capa de negocio de la presentación
definiendo en los formularios presentados a cliente,
y por configuración, multiples elementos de
los siguentes tipos:
-
Action:
Clase Java que resuelve el negocio.
-
View:
Posible presentación resultado a la ejecución
de un negocio. Pueden existir múltiples vistas
para cada acción. Pueden ser plantillas XSL,
JSP o Velocity, o podemos crearnos las nuestras.
-
Controller:
tenemos a nuestra disposición diferentes
clases de control de flujo que podemos extender
según las necesidades de nuestro proyecto.
STRUTS a
través de los archivos de configuración
definidos por el usuario en tiempo de diseño
resuelve el negocio y retorna la presentación
adecuada a cada posible resultado.
Nuestra arquitectura seguirá una estructura similar
pero propia adaptada a una definición de formularios
XForm.
La ventaja de utilizar este
modelo es que eliminamos la dependencia de control de
flujo en la parte servidora que, aunque tiene constancia
de que elementos de negocio y de que presentaciones
tenemos disponibles deja libertad a los formularios
cargados en client side para controlar el control
de flujo, que unido a la definición XForm, de
forma acumulativa en la parte servidora, soluciona la
problemática multicanal. |
|
|
|
|
| |
Ambas tecnologías son perfectamente
válidas para crear presentaciones ricas en
contenido y funcionalidad. Para resolver JSP tenemos
infraestructuras de base en Tomcat y para la resolución
XSLT utilizaremos la implementación Apache
Xalan de la parte JAX-P referente a XML StyleSheet
Language for Transformation.
|
|
|
|
|
| |
XML Schema es un estándar
definido y mantenido por la W3C que surgió
como una redefinición XML del estándar
DTD (Document Type Definition), que servía
para validar y definir la estructura y el típado
de datos de una instancia o documento XML válido.
Aparte de la complejidad de la lectura de los mismos,
los DTD, al igual que su rápida aceptación
por la comunidad tecnológica, mostraron, igual
de rápidamente ciertas carencias en sus sintaxis,
escalabilidad y utilidad. El World Wide Web Consortium
se puso a trabajar entonces, al igual que hizo con
la redefinición XML del HTML (XHTML), en la
nueva versión que esta llamada a sustituir
paulatinamente a los DTD’s.
Así pues y con una sintaxis lenguaje definida
totalmente por un XML y auto descriptiva, un DTD puede
ser traducido a XML Schema, pero no a la inversa,
ya que la potencia que posee XMLSchema, no la posee
un DTD. Herramientas como XML Spy realizan este paso
directo haciendo clic en una sola opción. A
su vez, se puede extraer cual es el XMLSchema o el
DTD correspondiente para un esqueleto que tengamos
de muestra que nos halla facilitado nuestro hipotético
cliente.
Nuestro XMLSchema es capaz de validar la correcta
estructura de un XML cualquiera y también el
correcto típado de los datos que viajan es
esa estructura compleja, aplicándose restricciones
de tipos básicos a esos ítems o restricciones
más complejas como expresiones regulares, enumeraciones,
validaciones contra otros elementos de la estructura
o herencia si queremos llegar a sacarle autentico
jugo su potencia.
|
|
|
|
|
|