面向面向方面的.NET编程(AOP)库仍在积极开发中?

时间:2010-08-08 11:49:19

标签: .net aop

我正在尝试找到一个相当成熟/稳定且免费提供的(最好是开源的)库,用于在.NET中执行AOP。我一直在寻找,发现下面的产品;然而,他们中的大多数似乎已经死了:

  • PostSharp - 这是通常推荐用于.NET的AOP解决方案,但它是商业产品,因此适用某些使用限制。 (但是,它似乎可以免费用于个人或开源项目。)

  • Spring.NET - 不仅仅是关于AOP,所以如果只想做AOP,它可能太强大了。 (?)

  • Policy Injection Application Block - 来自微软,我希望至少能保持这一点。

  • Castle WindsorDynamicProxy - 主要不是AOP库,但显然它可以用于此目的。

  • Aspect# - 这对我来说似乎已经死了。

  • Aspect.NET - 这似乎对我来说已经死了。

  • NAop - 显然不再支持。

  • AOP.NET - 这应该是NAop的继任者,而且看起来它不久前已经死了。

可能还有更多。从上面的列表中我可以看出,在.NET上进行AOP的唯一真正选择是PostSharp(即使它是商业产品),Spring.NET,微软的Policy Injection Application Block,或者也许是Windsor。

我忘记了任何主要选择吗?


另请参阅StackOverflow上的问题Suggestions for open source aspect-oriented library for C#。我发布了一个新问题,因为我对.NET的各种AOP解决方案的开发/维护状态特别感兴趣。

2 个答案:

答案 0 :(得分:5)

您不需要Windsor使用DynamicProxy。 Windsor将DynamicProxy用于自己的目的,就像NHibernate,RhinoMocks,Moq或其他库/应用程序/框架一样。 如果只需要运行时AOP,没有IoC容器,请单独使用Caste DynamicProxy。

它正在积极开发,最后一次预发布在2周前发布,最终发布(v2.5)预计在本月发布。

注意:在以前的版本中(最高v2.2),DynamicProxy曾经存在于自己的程序集Castle.DynamicProxy.dll中。它后来被移动到Castle.Core.dll,现在不需要其他程序集来使用它。 Source

答案 1 :(得分:1)

还有Aurum (可在www.machinaaurum.com.br获得),它是基于Unity构建的。 来源可在Codeplex上找到。