我试图找到一个相当成熟/稳定和免费可用的(最好是开源的)库,用于在. NET中进行AOP。我一直在搜索,并找到了下面的产品;然而,它们中的大多数似乎都死了:
- PostSharp-这是通常推荐用于.NET的AOP解决方案,但是它是一个商业产品,因此有一些使用限制(但是,它似乎可以免费用于个人或开源项目)。
- Spring.NET-不完全是关于AOP的,所以如果你只想做AOP,它可能太强大了。
- Policy Injection Application Block-来自微软,我希望至少能保持这一点。
- Castle Windsor和DynamicProxy--主要不是一个AOP库,但显然可以用于此目的。
- Aspect#-这对我来说似乎很死。
- Aspect.NET-这对我来说也很死。
*NAOP-显然不再支持。 - AOP.NET-这应该是NAop的继任者,看起来也像是前一段时间死了。
从上面的列表中,我发现在.NET上进行AOP的唯一真实的选择是PostSharp(即使它是一个商业产品),Spring.NET,Microsoft的Policy Injection Application Block,或者可能是温莎。
我是不是忘了什么重要的选择?
- 另请参阅StackOverflow上的问题Suggestions for open source aspect-oriented library for C#。我发布了一个新问题,因为我对. NET的各种AOP解决方案的开发/维护状态特别感兴趣。*
3条答案
按热度按时间58wvjzkj1#
你不需要温莎来使用DynamicProxy。温莎使用DynamicProxy有自己的用途,就像NHibernate,RhinoMocks,Moq或其他库/应用程序/框架一样。如果你只需要运行时AOP,没有IoC容器,单独使用Caste DynamicProxy。
它正在积极开发中,最后一个预发布版于2周前发布,最终版本(v2.5)预计将于本月发布。
注意事项:在以前的版本中(最高版本为v2.2),DynamicProxy通常位于自己的程序集Castle.DynamicProxy.dll中。后来将其移动到Castle.Core.dll中,现在不需要其他程序集即可使用它。Source
hrysbysz2#
还有Aurum(可在www.machinaaurum.com.br上获得),它是基于Unity构建的。源代码可在Codeplex上获得。
dzjeubhm3#
FWIW:微软在C#12中发布了拦截器的预览版。