在 C#/.Net 中进行面向方面编程 (AOP) 的最佳/最流行的方法是什么?
5 回答
- Castle 的DynamicProxy可能是在 CLR 上执行 AOP 的最常用工具。
- Spring 框架还通过其命名空间提供 AOP 功能
Spring.Aop
。
Postsharp是另一个著名的:“将 AOP 引入 .NET!” 我对它的经验很少,但它看起来不错,值得一看。
PostSharp很好。我已经使用它大约一年了。考虑到它所提供的近乎神一般的力量,它易于安装并且学习曲线相当浅。此外,似乎既有一个活跃的开发者社区,也有一个响应迅速的开发者。
查看 PostSharp 主页上的代码示例。这些都是用 PostSharp 完成的简单方面的好例子。
我已经使用 Spring.Net AOP Framework 大约 9 个月了。即使编织是在运行时而不是在编译期间完成的,它也非常强大,并且似乎不会在使用中造成性能损失。唯一需要注意的是,尽管您应用建议的对象不需要了解 Spring.Net AOP,但它们必须至少实现一个接口。顺便说一句,对于 Spring.Net 而言,该文档通常非常出色,它指出此限制将在将来的版本中删除,但没有给出路线图。
Spring.Net AOP 不需要您使用 Spring.Net 框架的其余部分,可以单独使用。
对于几种不同类型的事情,我玩过自己的滚动。我有一些运气。一般来说,我创建一个接口,用一个类实现它,然后创建一个实现接口的代理,执行我想要的任何前置条件步骤,调用真实对象的方法,然后执行我想要的任何后置条件步骤。我对这种方法的主要烦恼之一是接口中不能有构造函数,接口中也不能有静态方法,因此没有明显的地方可以放置这种类型的代码。困难的部分是代码生成——因为你要么要发出 IL,要么要发出必须编译的 C#。但这只是我的方法。它迫使我一次只考虑一个方面,真的——我没有 没有达到我可以抽象出“方面”并以这些术语思考的地步。简而言之:推出自己的工具集或找到您喜欢的工具集,可能来自埃里克·博登的名单。