Publicado el 3 de Julio del 2021
395 visualizaciones desde el 3 de Julio del 2021
4,5 MB
34 paginas
Creado hace 16a (16/10/2008)
Carlos Rovira
1
Arquitecturas Avanzadas Flex / JEE2
Introducción‣Técnicas, metodologías y soluciones para facilitar el desarrollo de Rich Internet Applications (RIA) flexibles y escalables.‣RIAlity es una arquitectura Flex/JEE que aplica estas técnicasAdobe Flex y JEE
‣ Es una Arquitectura para soluciones RIA basada en
‣ Es un conjunto de plugins para Eclipse (Tooling)
‣ Es una metodología de desarrollo RIA
3
¿Que es RIAlity?‣ Objetivo Principal:
‣ Automatizar el acceso a datos de forma que el desarrollador se centre
Aspecto visual del Interfaz
en los aspectos RIA del sistema:
‣
‣ Usabilidad
‣ Crear nuevos componentes que mejoren la experiencia del usuario
4
¿Que es RIAlity?5
¿Qué ofrece RIAlity? (I)‣Soluciones Escalables y Mantenibles.‣ Flexibiliza las soluciones RIA:‣Componentes desacoplados.‣Configuración a través de XML.‣Coste 0 en despliegues para diferentes:‣RDBMS (Oracle, MySQL, …)‣Servidores de aplicaciones (WebLogic, Tomcat, Jboss, …)‣Reducción de código.‣Componentes genéricos que manejan casos básicos (GenericDAO,...)‣Componentes extendibles para particulalizar casos (ej: ConcreteDAO)6
¿Qué ofrece RIAlity? (II)‣Framework Modular en cliente‣Basado en Cairngorm + Modulos‣Seguridad‣Integración con sistemas dispares (LDAP, ADS, bases de datos, …)‣Cumplimiento de leyes de protección de datos LOPD, LSSI,…‣Gestión de Proyectos RIA‣Metodología de desarrollo‣Estimación y Ahorro en los costes de desarrollo‣“Time-To-Market” óptimo7
¿Qué ofrece RIAlity? (III)‣Automatiza el desarrollo gracias a los plugins diseñados específicamente para producir de forma más rápida y fiable (Tooling).‣En Resumen: RIAlity simplifica del proceso de producción de las nuevas soluciones RIA proporcionando:‣Ahorro significativo de los costes.‣Aportando soluciones más robustas.8
Arquitectura Cliente‣Solución Cairngorm + Modulos‣Cairngorm aporta la estructura organizativa del código‣Los módulos nos ofrecen la posibilidad de partir la aplicación en trozos que sean cargados “on demand” ahorrando tiempos de carga y compilación.9
Arquitectura Cliente‣En RIAlity la arquitectura cliente está distribuida en 4 SWCs:‣riality_core.swc - Clases base de la arquitectura, utilidades,etc...‣riality_modules.swc - Framework que une Cairngorm y Modulos‣riality_security.swc - Framework que integra la seguridad‣Cairngorm.swc - Micro arquitectura estructural{Módulos
Aplicación{
Zona Securizada
Zona Pública
10
Arquitectura ClienteLoginshellM’’M’’’M’11
Arquitectura Cliente‣Login‣Aplicación Flex pura con la funcionalidad base para entrar en el sistema‣No conoce la URL del modulo shell (esta url es devuelta cuando la validación del usuario ha tenido éxito)‣La vista es modificable con facilidad (Lógica de negocio separada de la vista)DisplayList
addModule
12
Arquitectura Cliente‣Shell‣Plataforma base que cargará los módulos.‣Introduce el concepto de AdvancedViewManager ‣Ej: addModule(‘modulo1.swf’, this)‣El AdvancedViewManager se encarga de “enganchar” módulos a partes de la UI‣Básicamente asigna instancias de los módulos cargados a un objeto visual dentro del DisplayList‣Permite cambiar fácil y rápidamente el layout de una aplicación.M’13
Arquitectura Cliente‣Módulos‣Clase base de un Módulo en RIAlity: AdvancedModule‣Todo módulo debe cumplir un contrato representado por la interface IModuleCairngormAware‣Esta interface asegura que todo módulo cumple varias condiciones:‣Es cargado correctamente dentro de la aplicación‣Se inicializa como es esperado.‣Registra los comandos oportunos de su lógica de negocio.‣Ofrece un punto de acceso adecuado para el modelo de datos particular del módulo‣Debido a lo tedioso de la configuración de cada módulo, RIAlity ofrece un plugin que genera cada proyecto de módulos de forma automática.I
R
O
D
V
R
E
S
E
T
N
E
L
C
I
RDBMS(Oracle,MySQL,…)
BlazeDS/
LiveCycleDataSerivces
Otros(LDAP,Mail,…)
Cairngorm
14
Arquitectura RIA ClásicaRIAlity (JEE class library)
I
R
O
D
V
R
E
S
E
T
N
E
L
C
I
BlazeDS /
LiveCycleDataSerivces
Spring
JPA
Otros(LDAP,Mail,…)
RDBMS(Oracle,MySQL,…)
RIAlity Modules
RIAlity Security
RIAlity Core
Cairngorm
15
Arquitectura AvanzadaFlex
Clients
LCDS
Assembler
GenericAssembler
e s
e r vic
S
a t a
D
RemoteObject
3erd
Party
(Other IS, MS Biztalk, ...)
JPA, JDBC,
SAP,...
Multiple DataBases
DAO
GenericDAO
VO
DAO
GenericDAO
VO
DAO
GenericDAO
VO
Service
(Business Logic)
Service
(Business Logic)
Web
Service
Web
Service
Secure Web Service Layer
16
Arquitectura Servidor17
Spring‣Pieza central‣Desacopla los diferentes componentes mediante configuración XML.‣IoC (Inversion of Control) / Dependency Injection.‣AOP : Aspectos operando transversalmente en puntos claves de la arquitectura:‣Transaccionalidad transparente (a través del Servidor host de nuestra aplicación).‣Logging aplicado a los servicios18
BlazeDS / Live Cycle DS‣BlazeDS‣Open Source‣Comunicaciones cliente/servidor de alto rendimiento (protocolo AMF)‣HTTPStreming (arquitecturas comet o “data push”)‣LCDS‣Sincronización y flujo de datos en tiempo real para todos los Clientes Flex Conectados.‣Manejo de datos avanzado entre capas cliente/servidor.‣Mensajería (Suscripción / Publicación) entre clientes Flex o con otros sistemas a través de JMS.‣Capacidades NIO (Rendimiento Óptimo en entornos de alta disponibilidad)‣Aplicaciones colaborativas<factories>
<factory id="spring" class="com.carlosrovira.riality.factories.SpringFactory"/>
</factories>
19
BlazeDS / LCDS + Spring‣Configuración en services-config.xml‣Configurar una factoría para Spring‣Esto nos permite una mejor integración entre Spring y BlazeDS/LCDS‣Runtime configuration‣Evita escribir configuraciones redundantes (un nuevo ahorro de código)‣Clase BootStrap:‣Recoger de Spring la información de los beans declarados‣Crear los destinations (DataServices, RemoteObjects, ...) en runtime <service id="riality-remoting-bootstrap" class="com.carlosrovira.riality.bootstrap.SpringRemoteObjectBootStrap" />Configuración
BlazeDS/LCDS
Configuración
RIAlity
20
BlazeDS / LCDS + Spring21
JPA - Java Persistence API‣Independencia del motor de base de datos‣Cambio de RDBMS configurando un XML.‣Conexión a múltiples Bases de Datos.‣Independencia de la implementación final de un proveedor (Hibernate, TopLink, OpenJPA, ...)‣ORM que elimina la necesidad de desarrollar gran parte de las sentencias SQL.‣Facilidad de desarrollo:‣Menos código que desarrollar y mantener.‣Siempre podemos bajar al nivel nativoANOTACIONES
22
JPA - Entity‣Las entidades extienden BaseModel‣Solo existe una clase Java anotada (JDK 1.5 o +)@Entitypublic class Contacto extends BaseModel {private Integer telefono;@Column(name = "telefono", nullable = false, unique = true)public Integer getTelefono() {return telefono; } public void setTelefono(Integer telefono) { this.telefono = telefono; }...•
•
•
•
findAll
findById
findByProperty
findByExample
•
•
•
•
create
remove
update
...
23
GenericDAO‣Creación de un DAO que maneja una entidad:<bean id="testEntityDAO" class="com.carlosrovira.riality.daos.jpa.GenericDaoJpa">
<constructor-arg value="test.model.TestEntity" /></bean>‣Uso de Genéricos : public class GenericDaoJpa<T extends BaseModel>‣Sin escribir código ya tenemos los métodos básicos:‣Si queremos más funcionalidad : extends ‣Encapsula JPA:‣pero podemos usar otro proveedor (JDBC, SAP?)24
GenericAssembler‣Para LCDS‣Creación de un Assembler :<bean id="testAssembler" class="com.carlosrovira.riality.assemblers.GenericAssembler"><constructor-arg value="test.model.TestEntity" /><property name="service" ref="testService" /></bean>‣Existe una convención en el nombrado de métodos que se obtienen por introspección‣Si queremos más funcionalidad : extends ‣Nuevamente nos hemos ahorrado escribir una clase25
Service‣Define el API del negocio‣IMPORTANTE: Toda la lógica del negocio debe estar representada en esta capa (validaciones, acceso a distintos DAOs, etc...)‣Los Clientes Flex acceden vía Remote Objects o DataServices (Capa intermedia de Assemblers)‣Otros clientes acceden vía Web Services securizados gracias a Spring‣Esta capa soporta la transaccionalidad:@Transactionalpublic class ContactoService implements IGenericService {...transactionManager
Service
(Business Logic)
Service
(Business Logic)
Service
(Business Logic)
26
Transaccionalidad‣Implementada como un Aspecto (AOP) que corta a todos los servicios‣Nos ahorra el tener que abrir y cerrar transaccionesbenginTransacction....business codeendTransaction27
Seguridad (Spring Security)‣Seguridad Flexible que soporta autenticación y autorización.‣API en cliente y en servidor‣Integración con LDAP, ADS, Base de datos,…‣Integración con sistema de logs (trazabilidad de las acciones de un usuario).‣Cumplimiento de LOPD y LSSI.‣Transparencia y productividad de cara al workflow de desarrollo.‣Modulo de gestión de usuarios y roles de serieserviceLogAspect
Service
(Business Logic)
Service
(Business Logic)
Service
(Business Logic)
28
Logging‣Implementado como un Aspecto (AOP) que corta a todos los servicios‣Genera trazas genéricas (adaptables a nuestras necesidades)‣Nos da la información necesaria sobre:‣Quién entra‣Donde entra‣Qué hizo29
Tooling30
Tooling‣Gran parte del código es generado por el plugin‣La Plataforma nos proporciona otra parte del código‣Es tarea del desarrollador introducir los elementos diferenciadores partiendo de una base funcional.DesarrolloPluginPlataforma31
Metodología‣Departamentos de TI‣Trabajo en grupo.‣Necesidad de un proceso productivo predecible y medible.‣Seguridad y Robustez en el diseño e implementación de los Casos de Uso de un Sistema.‣Nuevos desarrolladores - Mayor facilidad para integrarse en el proceso productivo.32
Roadmap‣¿Que funcionalidades están por venir?‣Solución genérica para mantener las Tablas Maestras de un sistema‣Generación de código para casos tipo Maestro - Detalle‣Solución Genérica para el Lazy Loading‣Manejo de relaciones (ManyToOne, O
Comentarios de: Arquitecturas Avanzadas Flex / JEE (0)
No hay comentarios