有关面向方面编程的帮助和信息

时间:2009-02-18 02:45:39

标签: .net aop

我是面向方面编程概念的新手,但我想探索在我的项目中使用它来处理日志记录,报告等的想法。为此,我有一些问题:

  • 我是否应该为这些有限的目的而探索这条AOP路径?
  • 支持AOP的.NET框架是什么?
  • 其中哪些框架支持流畅的界面(我讨厌XML配置):)

5 个答案:

答案 0 :(得分:23)

答案 1 :(得分:2)

我不能代表.NET的细节,但AOP和能够将钩子附加到任意方法的更一般的想法,是一种方便的技术,可以解决一些其他毛茸茸的问题。

一个例子是design by contract。假设您有一堆方法可以在其上应用一些常见的合同。您可以在调用每个方法之前和之后添加一些“建议”(AOP术语),而无需剪切&将其粘贴到每种方法中。

在测试时,了解某些内部方法的内容通常很有用。它被调用了多少次,也许它返回了什么。您可以添加一个方面来执行该监视,而无需向方法本身添加令人分心的测试代码。甚至可能无法编辑该方法的代码。

请注意方面的实施方式。一些实现是精心设计的预处理器,可能使调试代码更复杂。其他人顺利地融入语言。动态语言非常好地处理AOP。 Perl对于AOP有Aspect.pm,而对于方法钩子有更普遍的Hook::LexWrap

答案 2 :(得分:1)

AOP对我也很有意思。在我看来,日志和性能监控,报告是AOP旨在处理的内容。对于.NET,Post Sharp是一个非常好的AOP框架。

我只是对它进行了一些实验,但似乎已经很好地实现了。

答案 3 :(得分:1)

如果您要查看Post Sharp,可以从CodePlex下载Google Book Downloader。我认为这个项目使用它。

答案 4 :(得分:0)

不要认为它完全不同。 AOP通过减少耦合,增加内聚力,通过给予某个类型1单一责任的对象来分离关注点来改进(IMO)您的设计。如果您来自.net世界,PostSharp会使用自定义属性来编写建议。如果您来自Java世界,则可以使用名为AspectJ的Java扩展。 AOP的应用程序比您通常看到的更多。

相关问题