Alles beginnt mit einem guten Anwendungsdesign. Wenn das Design Ihrer Anwendung korrekt ist, wird es viel weniger Grund für Sie, mit denen AOP wie Funktionen, die Ihr UI-Framework macht die Interaktion (dies auch für WCF hält).
Wenn Sie beispielsweise alle Geschäftslogik hinter einer generischen Schnittstelle verstecken und Befehlsnachrichten an sie übergeben (wie in dieser Artikel ), wird Ihr Controller dünne Wrapper werden, die nicht viel öfter tun, als solches Geschäft Befehle ausführen. In diesem Fall können Sie Genehmigung und Ausnahme-Filterung implementieren, indem diese Geschäftstätigkeit wickelt, den UI-Code sauber und frei von Attributen zu verlassen. diese Querschnittsthemen rund um Geschäftstätigkeit Wrapping kann sowohl mit Abfangen oder plain old Dekorateure erfolgen. Dies gibt Ihnen viel mehr Flexibilität und hält Ihr Design SOLID (die viel weniger offensichtlich lange hat Laufzeitvorteile).
Obwohl Code Webwerkzeuge wie PostSharp seinen Nutzen haben, sollten Sie vorsichtig mit ihnen sein. Sie injizieren Code in Ihre Assembly mit einem Post-Compile-Prozess. Dies macht es sehr schmerzhaft, diese Klassen zu testen, ohne diese Aspekte zu treffen. Sie können diese Klassen nicht einfach isoliert testen (was eine Voraussetzung für Komponententests ist). Wenn Sie Ihre Aspekte von einer statischen Variablen abhängig machen, werden sowohl Aspekte als auch Komponententests komplizierter. Statische Variablen erschweren die parallele Ausführung von Komponententests, und die Verwendung globaler Konstanten erfordert Tests, um die geänderte globale Einstellung korrekt aufzuheben, um zu verhindern, dass andere Tests beeinflusst werden.
Obwohl Code-Weben-Werkzeuge zu einer Leistung führen, die oft größer ist als das Abfangen, gibt es keinen Leistungsgewinn im Vergleich zur Verwendung von Dekoratoren.