Question

Est-ce que quelqu'un sait quelles sont les fonctionnalités AOP différentes entre AspectJ et PostSharp (oui, je sais qu'elles le sont pour différentes langues et plateformes)?

J'essaie de comprendre quel genre de choses AspectJ autoriserait que PostSharp ne le permettrait pas, et vice versa.

Était-ce utile?

La solution

PostSharp 2.0 est beaucoup plus proche d’AspectJ que PostSharp 1.5. La comparaison de PostSharp 1.5 à Spring AOP était justifiée, mais ne l’est plus avec PostSharp 2.0.

Cependant, il existe encore de fortes différences d'approche.

  1. L'approche des coupes de points est radicalement différente. AspectJ fournit un langage de points complexe. PostSharp fournit un système de déclaration de base pointcut déclaratif mais vous permet de développer des découpes de point impératives. Vous pouvez ainsi écrire du code (généralement à l'aide de System.Reflection) qui évalue la coupe de point au moment de la compilation. Ainsi, au lieu d’avoir un langage à points, PostSharp prend en charge les langages C # ou Linq.

  2. Il n'y a en effet pas de pointcut conditionnel (cflow).

  3. PostSharp prend en charge la sémantique des ordres supérieurs, comme les événements et les propriétés. À ma connaissance, AspectJ ne le fait pas (car il n’existe aucun événement ni propriété en Java).

  4. Les aspects PostSharp sont généralement instanciés et initialisés au moment de la construction, puis sérialisés dans l'assemblage et désérialisés au moment de l'exécution pour être exécutés. Cela permet à l'aspect "d'initialiser". au moment de la construction, les performances d'exécution sont meilleures. Il permet également d’exécuter une logique arbitrairement complexe au moment de la construction (généralement initialisation, évaluation ponctuelle, validation du point de jonction).

  5. PostSharp prend réellement en charge la composition des aspects, c’est-à-dire que vous pouvez appliquer plusieurs aspects ou conseils au même point de jonction de manière prédictive. PostSharp est conçu pour un scénario multi-fournisseurs, dans lequel plusieurs fournisseurs d'aspects ne se connaissent pas. Il a un système complexe de dépendances, où les développeurs / vendeurs d'aspect peuvent spécifier des contraintes, des exigences et des conflits d'ordre de déclaration de manière déclarative.

À partir de la version 2.0, PostSharp est livré avec un outil IDE qui couvre en partie les fonctionnalités de "AJDT". pour Eclipse.

Autres conseils

De leur documentation de PostSharp: http://doc.postsharp.org/ 1.5 / ## PostSharp.HxS / UserGuide / Laos / AspectKinds / Overview.html

Types de points de jonction pris en charge: http://doc.postsharp.org/ 1.5 / ## PostSharp.HxS / UserGuide / CoreLibrary / CodeWeaver / Overview.html

AspectJ offre beaucoup plus de flexibilité car les points de jonction peuvent être nettement plus complexes, afin de faire ce que vous voulez.

Il semble que cflow, par exemple, ne puisse pas être effectué avec PostSharp.

C’est comme Spring dans la mesure où il s’agit d’une version allégée d’AOP afin de faciliter son utilisation.

Mise à jour: Bien que je ne pense pas qu'elle soit complètement mise à jour, voici une bonne idée de ce que AspectJ prend en charge: http://www.eclipse.org/aspectj/doc/released/ progguide / index.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top