Invest in people before investing in tools

Il blog di Matteo Baglini
posts - 118, comments - 95, trackbacks - 697

[Spring.NET #31] Spring.Aop, Aspect Oriented Programming Framework Overview

Altra parte fondamentale di Spring.NET è l' AOP Framework. Questo post non vuole spiegare che cosa è o non è l'AOP, ma vuole focalizzarsi soltanto su gli strumenti forniti da Spring.NET per utilizzare questo paradigma di programmazione nelle nostre applicazioni .NET. Tutta via, un minimo di infarinatura è obbligatoria, in poche pareloe l'Aspect Oriented Programming è un paradigma complementare all'Object Oriend Programming e permette di modularizzare gli aspetti ed i comportamenti trasversali della nostra applicazione, separandoli dal dominio applicativo. L' AOP è composta da i senguenti concetti non legati al framework utilizzato ma al paradigma stesso:

  • Aspect: rappresenta il comportamento trasversale, crosscutting concern ( esempio: Caching, Logging, Transaction Management) .
  • Joinpoint: rappresenta un punto ben preciso durante l'esecuzione del programma, come l'invocazione di un metodo.
  • Advice: rappresenta l'operazione che effetturà il motore di AOP per ogni Joinpoint. Esistono diversi tipi di Advice: Before, AfterReturning, Around e Throw, i quali permettono rispettivamente di effettuare operazioni in diversi istanti rispetto al Joinpoint interessato.
  • Pointcut: è l'insieme di regole che definisce quale Advice eseguire per quale Joinpoint.
  • Target: la classe che soddisfa uno o più Joinpoint e che sarà sottoposta ad un Advice, essa viene anche chiamata Advised o Proxied Object.
  • Introduction: permette la creazione di mixin aggiungendo metodi e/o proprità ad un Advised Object.
  • Proxy: un proxy creato in maniera dimanica generando codice IL a runtime. Questo proxy sarà il risultato dell'assemblaggio fra gli Advice e l'oggetto Target.
  • Weaving: rappresenta l'operazione di assemblamento degli Aspect per un determinato Target generando l' Advised Object. Questa operazione può essere fatta sia a compile time, sia a run time. Spring.NET adotta quest' ultima motodologia.

Nei prossimo post descriverò le classi fornite da Spring.NET per la gestione di Pointcut, Advice, Aspects e Proxy.

Come per gli altri componenti di Spring.NET il modulo di AOP e quello di IoC non sono dipendenti fra loro, ma complementari, quindi possiamo usare il primo piuttosto che il secondo, però se usati insieme daranno il massimo della potenzialità.

Print | posted on mercoledì 16 aprile 2008 11:03 | Filed Under [ .NET OpenSource Spring.NET ]

Powered by:
Powered By Subtext Powered By ASP.NET