La meilleure façon de faire de la programmation orientée aspect dans .NET est d'utiliser des techniques de conception bien connues. Par exemple, en appliquant le Principes SOLIDES vous pouvez atteindre la flexibilité et la modularité dont vous avez besoin pour permettre l'ajout de préoccupations transversales. Si la conception est bonne, vous serez même en mesure d'appliquer la plupart des préoccupations transversales sans aucun cadre. C'est une erreur de penser que la POO n'est pas adaptée à la POA.
Voici quelques conseils :
- Ne dépendez pas des instances concrètes, mais dépendez des abstractions.
- Ne mélangez pas les préoccupations transversales et la logique métier dans la même classe.
- Ajouter des préoccupations transversales en enveloppant les classes avec une logique d'entreprise dans des classes qui mettent en œuvre ces préoccupations ( décorateurs ).
- Trouvez les artefacts communs dans votre conception et modélisez-les de la même manière, de préférence en utilisant le même type d'abstractions. Jetez un coup d'œil à este y este par exemple.
Lorsque les bonnes abstractions sont en place, l'ajout de nouvelles préoccupations transversales au système se résume à l'écriture d'une nouvelle classe décoratrice et à son intégration dans les bonnes implémentations. Si les abstractions sont génériques, vous pouvez envelopper un décorateur unique autour d'un grand groupe de classes (ce qui est exactement le but de la POA).
Bien que des techniques telles que les mandataires dynamiques et le tissage de code puissent faciliter le travail avec une application mal conçue, il n'y a pas vraiment d'alternative à une bonne conception. Tôt ou tard, vous vous brûlerez. Cela ne signifie pas que la génération de proxy dynamique et le tissage de code ne doivent pas être utilisés. Mais sans une conception correcte de l'application, même ces techniques ne seront que marginalement utiles.
4 votes
Il serait utile que vous fournissiez des liens vers tous les AOP, afin d'épargner au lecteur un peu de temps avec Google. J'espère que cette question/réponse deviendra un excellent résumé des différentes options de la POA dans .NET.
11 votes
52 personnes ont voté que c'était une question constructive. 5 ont voté que ce n'était pas constructif. Qui a décidé ? Le modérateur devrait au moins modifier ou reformuler la question, mais il ferait mieux de prendre en compte l'opinion de la plupart des participants.
2 votes
@Revious Totalement d'accord !
2 votes
Il est étonnant que SO et les gens downvote questions comme celle-ci comme OT. Une question aussi utile et une technologie permettant de discuter et d'aider la communauté sont simplement rejetées et fermées par une bande de personnes démodées, du style des années 80, qui sont coincées dans le passé. Le monde a changé. Il est tout à fait compréhensible que vous vouliez aider à répondre à des questions spécifiques, mais fournissez au moins un lien dans votre étiquette "fermé" où poster de telles questions. Cela aiderait beaucoup et éviterait ce genre de stupidité.