Pregunta

He estado usando algunas soluciones básicas de estilo AOP para cuestiones transversales como seguridad, registro, validación, etc.Mi solución ha girado en torno a Castillo de Windsor y Proxy dinámico.Seguí este camino porque puedo aplicar todo usando un DSL basado en Boo y mantener mi código limpio de atributos.El fin de semana me dijeron que echara un vistazo PostSharp ya que se supone que es una "mejor" solución.Eché un vistazo rápido a PostSharp, pero el uso de atributos me desanimó.

¿Alguien ha probado ambas soluciones y le gustaría compartir sus experiencias?

¿Fue útil?

Solución

Solo miré Castle-Windsor por un corto tiempo (todavía), así que no puedo comentar sobre eso, pero usé PostSharp.

Postsharp funciona tejiendo en tiempo de compilación.Agrega un paso posterior a la compilación en su compilación donde modifica su código.El código se compila como si acabara de programar las cuestiones transversales en su código.Esto es un poco más eficaz que el tejido en tiempo de ejecución y, gracias al uso de atributos, Postsharp es muy fácil de usar.Creo que usar atributos para AOP no es tan problemático como usarlos para DI.Pero ese es sólo mi gusto personal.

Pero...

Si ya usas Castle para la inyección de dependencias, no veo una buena razón por la que no deberías usarlo también para cosas de AOP.Creo que, aunque el AOP en tiempo de ejecución es un poco más lento que en tiempo de compilación, también es más potente.En mi opinión, AOP y DI son conceptos relacionados, por lo que creo que es una buena idea utilizar un marco para ambos.Así que probablemente volveré a mirar las cosas del castillo en el próximo proyecto. Necesitaré AOP.

Otros consejos

Un par de problemas menores con PostSharp...

Un problema que he tenido con PostSharp es que mientras uso asp.net, los números de línea para los mensajes de excepción están "fuera" según la cantidad de instrucciones IL inyectadas en ensamblajes por PostSharp, ya que los PDB no se inyectan también :-).

Además, sin los ensamblados de PostSharp disponibles en tiempo de ejecución, se producen errores de tiempo de ejecución.Con Windsor, los cortes transversales se pueden desactivar en una fecha posterior sin tener que volver a compilar el código.

(espero que esto tenga sentido)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top