Aplicaciones Robustas con
Programación Orientada a Aspectos

Alex Casquete
blog: www.idlebit.es
twitter: @acasquete
email: acasquete@pasiona.com
En la próxima hora veremos…

¿Qué es AOP?
Temas transversales comunes (Cross-cutting concerns)
Problemas al utilizar temas transversales
Soluciones existentes
Beneficios de AOP
Demos (PostSharp, DinamicProxy)
Preguntas
¿Qué es AOP?
Temas transversales
  Cross-cutting concerns

Logging       Seguridad        Transacciones



    Multithreading        UI
Problemas al utilizar temas transversales


     Más      Código      Código     Código
    código   duplicado   mezclado   acoplado
«The number of defects in a feature is
proportional to the size of the component.»
El número de errores está relacionado


       Número       Dispersión
       de líneas    del código
Soluciones
Añadir transversalidad sin modificar el código
existente.
Aplicar esta transversalidad con el mínimo código.
Mejora de la lógica transversal, sin revisar el
código de negocio.
Eliminación de código duplicado.
¿Soluciones?

 Proxies     Programación   Generación
dinámicos      funcional     de código
Beneficios de AOP
                               Aseguramiento
Menos coste    Menos fallos
                                de la Calidad


                         Mejora el
        Mejora el
                         trabajo en
      mantenimiento
                           equipo
demo
Hello PostSharp y DynamicProxy
Conclusiones AOP


No sustituye a la OOP la extiende.
                     ,
Para implementar temas transversales.
Código simple = Éxito.
Referencias

Aspect-
Aspect-Oriented Software Development
http://aosd.net

PostSharp
http://www.sharpcrafters.com/postsharp

DynamicProxy
http://www.castleproject.org/dynamicproxy
¿Preguntas?

    Aplicaciones Robustas con
Programación Orientada a Aspectos
                  Alex Casquete
               blog: www.idlebit.es
               twitter: @acasquete
         email: acasquete@pasiona.com
Barcelona Developers Conference 2011
           Nov 17th - 19th

Aplicaciones robustas con Programación Orientada a Aspectos