Techdays 2010 - Jour 1 : La Programmation Orientée Aspect en .Net
Par Pascal CROUZET, lundi 8 février 2010 à 23:47 :: .Net :: #129 :: rss
Avec le temps, les technologies rendent nos applications de plus en plus complexes. Certaines problématiques sont adressées par les méthodologies (DRY, SOLID, SoC, SRP, etc.), les patrons de conception (design pattern), la programmation orientée objet (OOP) ou les architectures orientées services (SOA), par exemple.
Mais il vient un moment où le développeur ne peut plus découpler les fonctionnalités. La programmation orientée aspect permet d'adresser cette problématique.
Cette conférence nous a présenté cette méthode et les outils disponibles en .Net.
Mais il vient un moment où le développeur ne peut plus découpler les fonctionnalités. La programmation orientée aspect permet d'adresser cette problématique.
Cette conférence nous a présenté cette méthode et les outils disponibles en .Net.
Dans une application, il y a des problématiques transverses (ou Cross-Cutting Concerns, CCC) qui peuvent venir s'intercaler dans le code dit "métier". C'est par exemple le cas du logging, du cache, de la sécurité, des exceptions, des transactions, de la validation.
La Programmation Orientée Aspect (ou Aspect Oriented Programming, AOP) permet de dépolluer le code métier en isolant ces CCC. Elle vient en complément de la programmation orientée objet.
Aspect = Advice(s) + Pointcut(s)L'AOP, c'est la combinaison de greffons (ou Advices) et de points d'actions (ou Pointcuts). Les greffons encapsulent les fonctionnalités et les points d'actions indiquent les endroits où doivent intervenir ces greffons. Le moteur qui va insérer les greffons aux points d'actions est le tisseur (ou Weaving).
Il y a plusieurs méthodes pour décrire des aspects. Cela peut être par un langage ou une surcouche au langage, des attributs et des métadonnées, des fichiers tiers (xml, DSL, etc.) ou une API classique (le plus répandu).
Il y a 2,5 modes de tissage :
- Le tissage dynamique. Il intervient à l'exécution, en interceptant les points d'action. Cela peut être rendu possible par du remoting (dans ce cas, les classes décorées doivent hériter de MarshalByRefObject et le code est assez intrusif) ou par héritage à la volée, par réflexion (dans ce cas, il faut passer par des factory pour être sûr que chaque instance est correctement décorée. Plusieurs frameworks fonctionnent sous ce mode : Castle, Spring.Net et Unity).
- Le tissage statique. L'implémentation est plus souple, mais fournit un code binaire plus volumineux car il intervient à la compilation en complétant le code MSIL (ce qui est plus performant que de la reflexion). C'est le cas de Postsharp.
- Le tissage hybride (dynamique + statique). Il combine les deux autres modes.
La conférence était présentée par les excellents Yann Schwartz (Architecte/Plombier chez Polom, à droite sur la photo) et Romain Verdier (Architecte chez FastConnect, à gauche sur la photo). Bon, aujourd'hui ils n'étaient pas en grande forme, mais je vous recommande chaudement leurs blogs respectifs : I am a Vocoder et Codingly.
Yann et Romain sont des membres actifs de la communauté Alt.Net France, comme l'est Robert Pickering, d'Alti.

Commentaires
1. Le lundi 15 mars 2010 à 20:50, par Pascal CROUZET
Ajouter un commentaire