053 Extendiendo Gene Xus Con Programacion Orientada A Aspectos Aop

Preview:

Citation preview

Aspect Oriented Programming:

AOP con GeneXus

Pablo Planinich – Gonzalo Martínez Setiembre, 2009

w w w . a c c e n d o - i t . c o m

¿QUÉ ES?

¿CÓMOFUNCIONA?

¿PARA QUÉSIRVE?

EXPERIENCIA

AOPBENEFICIOS

¿Qué es AOP?

CimientosEstructurasPlantaAlmacenamientoMobiliarioSanitariaEléctricaVentilaciónIluminaciónCalefacciónRefrigeraciónGasCableTeléfono / DatosAlarmaCasa Inteligente

CALEFON A GAS

GAS VENTILACION ELECTRICIDAD AGUA

GAS

VENTILACION

ELECTRICIDAD

AGUA

APLICACIÓN

LIBRERÍA

SISTEMA OPERATIVO

HARDWARE

LOGGING

AUDITORIA

MONITOREO

SEGURIDAD

PERFORMANCE

ERRORES

¿Qué es AOP?

CALEFON A GAS

GAS

VENTILACION

ELECTRICIDAD

AGUA

r

r

Seguridad –Usuario ya autenticado?

Manejo de errores

Monitoreo de la aplicación

Seguridad – usuario autorizado para operación?

Seguridad – encripción /desencripción de datos

Interacción con otros sistemas

Logging – informativo deoperación anterior

Reintentos ante fallas

Transaccionalidad

Logging - performance

Auditoría sobre los accesos

Manejo de errores

Objeto A Objeto B

CU

AN

TIFI

CA

CIO

N INA

DV

ERTEN

CIA

Lógica de negocio 1

Lógica de negocio 2

Lógica de negocio 3

Seguridad

Logging

Auditoría

=AOP

DECLARATIVO

Descomposiciónen Aspectos

“Tejedor”(Weaver)Requerimientos

Sistema finalImplementación de Aspectos

AspectJ es extensión de Java = No hay que cambiar la aplicación

¿Cómo funciona?

execution(public * GXWebPanel+.webExecute(..))

before (GXWebPanel gxwebpanel) : ejecucionWebPanel(gxwebpanel) {…}

public pointcut ejecucionWebPanel(GXWebPanel gxwebpanel) :

&& this(gxwebpanel);

Agregar o cambiar clases, interfaces, métodos o variables

USO: Categorizar objetos en múltiples jerarquías: contables, centro de costos…

Advertencias en compilación ante determinados patrones de uso

USO: Impedir que una categoría de objetos llame a otra. RRHH no llama a Logística

¿Cómo funciona?

AspectoPunto de

UniónPunto de

CorteConsejo

Intersección Dinámica

Intersección Estática

IntroducciónDeclaración

de compilación

¿Para qué sirve?

MONITORLOGGING

AUDITORIA

SEGURIDAD

PERFORMANCE

NEGOCIO

ENFOQUE (Metodología)

CONTABLE

FINANZAS

COMPRASVENTAS

RRHH

MECANISMOExtender GXy Sistema

AOSD

¿Es nuevo?

Experiencia

web.xml

¿Cómo lo hicimos antes?

Filtro Web A = Autenticación

Filtro Web B = Manejo de Errores

Filtro Web C = Registro de tareaspor usuario

Requerimientos HTTP de usuarios

Requestsdescartados

Respuesta HTML para usuarios

Aplicación

Experiencia

Mecanismos Vs. Enfoque

Patrón “Publicación – Subscripción” basado en eventos• Listener a nivel de web.xml•Manejador de eventos (en DB) a nivel

de aplicación

GeneXus – Before / After Commit

Sistemas basados en reglas

Frameworks configurables

¿Cómo lo hicimos antes?Experiencia

Filtros

AspectJ = Declarativo para Monitor

ExtensibilidadRobustez

ModularidadMantenibilidadComprensibilidad…

Funcionalidad• Configurabilidad

ReusabilidadEficienciaSeguridad / Integridad

CorrecciónCompatibilidad

Verificabilidad

Economía, y Oportunidad temporal

BeneficiosFACTORES DE CALIDAD (1977 !!!)

EXTERNOS INTERNOS

“Soportabilidad”

Conclusiones

• AOP es anterior al mecanismo “Tejedor”

• Rompe barreras entre aplicación y sistema

• No sacrificar compatibilidad por extensibilidad