POA
Les tisseurs d'aspect
Nous avons vu précédemment qu'un programme codé en orientée aspect peut être découpé en deux parties disjointes :
- les classes
- les aspects
Le programme ne doit pas avoir connaissance des aspects, ils ne sont jamais appelés dans les classes du programme. Nous pouvons donc nous demander comment ces aspects sont appliqués sur le programme.
C'est le but des tisseurs d'aspects (ou aspect weaver), ils ont pour rôle de greffer l'ensemble des aspects sur l'ensemble des classes du programme. Les tisseurs d'aspect se différencient sur deux points :
- le language de programmation utilisé
- le moment où le tissage est réalisé.
L'opération de tissage peut être faite à la compilation ou à l'execution du programme. Les tisseurs statiques s'appliquent à la compilation du programme. Ils prennent en entrée un ensemble de classes et un ensemble d'aspects pour founir un programme compilé augmenté d'aspects. Ensuite, les tisseurs dynamiques sont, quant à eux, capables d'appliquer les aspects dynamiquement, pendant l'execution du programme. Leur principal atout est leur capacité à ajouter, supprimer ou modifer les aspects à chaud pendant l'execution du programme, ce qui est très utile pour les serveurs d'applications.
Voici une liste de quelques tisseurs d'aspects connus :
Language | Tisseur | Type |
---|---|---|
En Java | AspectJ : Extension du langage Java. JbossAOP : Extension du langage Java. JAC (Java Aspect Components) : Framework 100% Java. AspectWerkz : Framework 100% Java. |
statique dynamique et statique dynamique dynamique et statique |
En C++ | AspectC++ | |
En C#, VB.NET | AspectDNG | statique |
En PHP | phpAspect | statique |
En C | Aspect-C | |
En Caml | Aspectual Caml |