Introducción a la Programación Orientada a Aspectos

2,219 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,219
On SlideShare
0
From Embeds
0
Number of Embeds
100
Actions
Shares
0
Downloads
27
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Introducción a la Programación Orientada a Aspectos

  1. 1. Introducción a la Programación Orientada a Aspectos<br />Por José Fernando Romaniello<br />http://jfromaniello.blogspot.com<br />
  2. 2. ¿Qué es AOP?<br />Según Wikipedia:<br />Es un paradigma de programación relativamente reciente cuya intención es permitir una adecuada modularización de las aplicaciones y posibilitar una mejor separación de conceptos.<br />Según GregorKiczales:<br />Un mecanismoquepermite la implementación modular de asuntostransversales (crosscutting concerns)<br />
  3. 3. ¿Qué es AOP?<br />Asuntos transversales (crosscuttingconcerns).<br />Código disperso (scatteredcode).<br />Código enmarañado (tangledcode).<br />Plomería (plumbingcode)<br />
  4. 4. ¿Qué es AOP?<br /><ul><li>Código disperso (scatteredcode).</li></li></ul><li>¿Qué es AOP?<br /><ul><li>Código enmarañado (tangledcode).</li></li></ul><li>¿Qué es AOP?<br /><ul><li>Otras soluciones</li></ul>Plantillas código (codesnippet)<br />Generador de código<br />Herencia (mal usada)<br />Buscar y reemplazar<br />Pero con RegEx (expresiones regulares) !!!<br />
  5. 5. ¿Qué es AOP?<br />Y si encontrara la forma de escribir solamente esto y que el código se comporte de igual manera que lo anterior?<br />
  6. 6. Conceptos básicos de AOP<br />Transacciones<br />Seguridad<br />Logging<br />Aspectos<br />Validación<br />Cache<br />
  7. 7. Conceptos básicos de AOP<br />Al ingresar a un método<br />Al salir de un método<br />Al escribir un field<br />Punto de cruce<br />Al fallar un método<br />Al leer un field<br />
  8. 8. Conceptos básicos de AOP<br />Consejo: código del aspecto a introducir.<br />Punto de corte: qué consejo se va a aplicar a cada punto de cruce?<br />Introducción: modificar la interfaz de una clase existente.<br />
  9. 9. Conceptos básicos de AOP<br />Destinatario: la clase que va a ser “aconsejada”. Nuestra clase.<br />Tejido (Weaving): es el proceso por el cual se introducen los Aspectos a Destinatarios para crear los Objetos Resultantes en los determinados Puntos de Cruce.<br />Resultante: target + aspecto. Es el resultado de tejer aspectos en el destinatario.<br />
  10. 10. Técnicas en .Net<br />Subclasing en tiempo de ejecución:<br />CastleDynamic Proxy<br />Spring.AOP<br />Linfu.DynamicProxy<br />IL weaving<br />Al compilar:<br />PostSharp<br />Post compilación:<br />PostSharp<br />Linfu.AOP<br />Mono.Cecil ( ? )<br />Técnicas nativas del framework (cuasi-AOP)<br />Filters en Asp.Net MVC<br />Behaviors en WCF<br />
  11. 11. Dynamic Proxy<br />Los frameworks de Dynamic Proxy generan una clase (Destinatario) dinámicamente que heredan o implementan el Target, donde se inyectan nuestros Aspectos.<br />Punto de corte: método virtual o método implementación de interfaz.<br />A programar!<br />
  12. 12. PostSharp<br />PostSharp es un framework de AOP. Es por esto que toda su interface respeta la nomenclatura de AOP.<br />Modifica el código intermedio IL para introducir el comportamiento (IL Weaving). <br />Dispone de una arquitectura muy rica para hacer MultiCast. Esto nos permite propagar nuestros aspectos desde interfaces o clases base.<br />Tiene muchos puntos de corte, se puede interceptar métodos privados, públicos, fields, incluso clases sealed.<br />Existen muchos aspectos publicados como plugins.<br />
  13. 13. Muchas gracias<br />Fin<br />

×