Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Programación Orientada a Aspectos (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com
Descomposición aspectual
Separación de intereses (separation of concerns)
Busca aislar aquellos intereses transversales (cross cutting concerns)
Cada uno de dichos intereses se implementará en una unidad separada

Monografias.com
Recomposición aspectual
Posterior a la implementación, un componente creará unidades modulares con cada aspecto y las entrelazará
El producto final es similar al de OOP
La diferencia en AOP es que la implementación de cada aspecto no es consciente de las restantes

Monografias.com
Versión AOP de Banco

public class Banco {
// declaraciones varias

public double ProcesarDebito(long cuentaId, double monto) {
// apertura de demarcacion transaccional

try {
// recupero de la cuenta
// validaciones de negocio
// logica de negocio asociada al débito
// persistencia del nuevo estado
// traceo del movimiento para auditoria
// cierre exitoso de la transacción (commit)
return nuevo saldo cuenta;
} catch (Excepcion e) {
// traceo de la excepcion para auditoría
// cierre anormal de la transacción (rollback)
// relanzamiento de la excepcion para las capas superiores
}
}

// declaraciones de otros métodos de negocio
}

(Gp:) Transaccionalidad
(Gp:) Persistencia
(Gp:) Trazabilidad

(Gp:) Transaccionalidad

(Gp:) Persistencia

(Gp:) Trazabilidad

(Gp:) ?

Monografias.com
Lenguajes AO
Los lenguajes OO surgieron como extensiones a los lenguajes estructurados
C++ amplió la gramática del Lenguaje C
Visual Basic añadió objetos a BASIC
Delphi a Pascal
Los lenguajes AO hacen lo propio con los lenguajes OO
Por ende, OO no muere: evoluciona

Monografias.com
Anatomía de un lenguaje AO
Implementación de intereses
Para esto sirve cualquier lenguaje OO
Especificación de aspectos (aspects) y reglas de “tejido” (weaving rules)
Punto de unión (join point, pointcut)
Notificación (advice)
Interceptor (interceptor)

Monografias.com
Anatomía (cont.)

public class Banco {
// declaraciones varias

public double ProcesarDebito(long cuentaId, double monto) {
// validaciones de negocio
// logica de negocio asociada al débito
return nuevo saldo cuenta;
}

// declaraciones de otros métodos de negocio
}

(Gp:) Persistencia

(Gp:) Trazabilidad

(Gp:) Transaccionalidad

Monografias.com
Beneficios
Aspectos reunen el código desperdigado
Separación de intereses reduce el acoplamiento
Mayor reusabilidad
Sistemas más simples de evolucionar
AOP permite postergar decisiones de diseño

Monografias.com
Demos
Versión OOP de Banco
Versión AOP usando Proxys
Versión AOP usando Weaving Estático

Monografias.com
AOP.NET (NAop)
Declara aspectos, puntos de unión, etc en XML
Realiza weaving en forma dinámica (resuelve los aspectos en tiempo de ejecución)

Monografias.com
Proyecto CAMEO
Es una extensión del compilador C#
Realiza weaving en forma estática (resuelve los aspectos en tiempo de compilación)

Monografias.com
Eos
Es una extensión del compilador C#
Realiza weaving en forma estática

Monografias.com
AspectDNG
Post procesa assemblies introduciendo notificaciones (advices)
Realiza weaving en forma estática
Opera sobre cualquier lenguaje .NET

Monografias.com
LOOM.NET
Declara puntos de unión y notificaciones mediante atributos en la clase que modela el aspecto
Provée weaving estático y dinámico

Monografias.com
Aspect#
Posée un lenguaje para definir aspectos basado en AOP Alliance
Provée weaving dinámico proxeando la clase interceptada

Monografias.com
Weave.NET
Apunta a cualquier lenguaje .NET
Provée weaving dinámico al momento de carga de la clase interceptada
Aspectos se declaran en XML

Monografias.com
AspectJ
Dirigido por Kiczales, es el proyecto más antiguo y más evolucionado de AOP
Extiende la sintaxis de Java
Weaving estático

Monografias.com
Spring Framework y Spring.NET
Incluye características AOP mediante Dynamic Proxies
Las reglas de tejido se especifican en XML (weaving dinámico)
Desarrollado para J2EE, aunque se está portando a .NET

Monografias.com
Conclusiones
OOP no impide que intereses cruzados (cross cutting concerns) se enreden (tangled code)
AOP permite implementar intereses en forma aislada (separation of concerns) y definir reglas para enhebrarlos (weaving rules) hacia la ejecución
Esto resulta en aplicaciones menos acopladas y de evolución más sencilla

Monografias.com
Referencias
Marc Clifton: Aspect Oriented Programming / Aspect Oriented Software Design
Ramnivas Laddad: I want my AOP!, Part 1
Dharma Shukla: Aspect-Oriented Programming Enables Better Code Encapsulation and Reuse
Andrea Bioli: The simplest AOP scenario in C#
M. Devi Prasad: AOP Support for C#
Gregor Kiczales: The More the Merrier (soporte para aspectos en .NET)
The Server Side: Entrevista a Gregor Kiczales sobre AOP

Monografias.com
Recursos
Aspect-Oriented Software Development
Aspect#
AspectDNG
Eos
LOOM.NET
AspectJ
Weave.NET
Spring Framework
AOP Alliance
Naop (AOP.NET)

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter