Pros y contras de la programación orientada a aspectos
Un error común es pensar que AOP es una interceptación, lo cual no es el caso. Sin embargo, sí utiliza la interceptación para aplicar notificaciones y combinar comportamientos. Hay algunos ejemplos de código .NET que ilustran la interceptación a través de ContextBoundObject en un estilo de copia de AOP. Sin embargo, no es apropiado usar ContextBoundObject para ilustrar la intercepción, porque el requisito previo para usar este método es que todas las clases que necesitan interceptar deben heredar de ContextBoundObject. Los métodos AOP con condiciones previas como ContextBoundObject tendrán un impacto negativo en la generación de demanda, por lo que se consideran métodos pesados en AOP y deben evitarse. Los métodos pesados dejan una gran "huella" en el sistema que potencialmente afecta a todas las clases, dificultando futuros cambios o modificaciones en la funcionalidad del sistema.
Creé un framework liviano llamado Encase. El término "ligero" se utiliza en el sentido de que no tiene ningún impacto general en el sistema. AOP todavía afecta a diferentes partes del sistema, pero elegir un marco liviano y aplicar buenas prácticas de programación puede mitigar la mayoría de los problemas negativos. El propósito del marco Encase es simplificar los puntos de corte, los mixins y la composición de aspectos. Los desarrolladores pueden aplicar aspectos en Encase a través del código, reemplazando los archivos de configuración (como XML) utilizados por la mayoría de los otros marcos AOP livianos.
Los marcos pesados obstaculizan la aplicación de AOP, pero el principal culpable de obstaculizar la aplicación generalizada de AOP es que casi todos los ejemplos de AOP disponibles actualmente incluyen el siguiente contenido: interceptar antes de ejecutar el método y aplique el aspecto Trace.WriteLine (método ingresado). Contrariamente a la creencia popular, AOP es útil para resolver otros problemas además del registro, la seguridad, las especificaciones y cosas de esa naturaleza.