E' passato un anno da quando ho scritto l'articolo su AOP e .NET:
"AOP: c'è spazio in .NET per questa tecnologia?" (DEV
n.115 - Febbraio 2004 - richiede username e
passoword...) e proprio in questi giorni sembra che AOP stia di nuovo
generando interesse nella comunità .NET...
Roy Osherove ha postato il link ad un sito che elenca i tool disponibili (progetti open source,
alcuni dal dubbio funzionamento e supporto, altri aggiornati più di
recente...).
Altri tool li avevo segnalati io l'anno scorso, ma tutti prontamente
abbandonati (tranne eXtensible C# che dalla versione 1.x gratuita è diventato a
pagamento dalla 2.x, e non è propriamente un tool AOP al 100%...)
The article speaks about Aspect Oriented Programming
(AOP) and its relationship with .NET, ranging from COM+/Enterprise
Services, ContextBound Attributes, eXtensible C#, CLAW, LOOM,
Aspect
C#, to some interesting comments from Clemens
Vasters, Don Box (at Tech Ed 2003 Europe), John Lam, and
others...
Dall'articolo e dai commenti linkati, si evince che secondo la maggior parte
delle persone che ha lavorato in AOP su .NET la strada è irta e pericolosa,
piena di problemi "concettuali" e di design difficilmente risolvibili, o meglio
risolvibili percorrendo altre strade (generazione del codice e altro).
L'interception utilizzata dalla maggior parte dei framework è una strada
abbastanza lenta. L'utilizzo delle profiling API per modificare il codice al
volo è un'attività rischiosa che introduce problemi nel debugging.
Anche Don Box parlando di Spring, NSpring e altri tool del genere in un
recente .NET Rocks ha fatto presente come questi tool introducono tanti
problemi quanti ne risolvono, come ad esempio il problema dei puntatori nudi
(non adornati dal framework AOP o simile in uso) che potrebbero essere passati
in giro scavalcando il framework e creando un sacco di problemi.
Anche Forrester Reasearch si è occupata di AOP con una ricerca intitolata "AOP Considered Harmful", disponibile a pagamento, in cui
si fa vedere come forse bisognerebbe cercare di risolvere in altro modo i
problemi che oggi vengono risolti da AOP...