【发布时间】:2008-09-25 15:22:04
【问题描述】:
在 C#/.Net 中进行面向方面编程 (AOP) 的最佳/最流行的方法是什么?
【问题讨论】:
在 C#/.Net 中进行面向方面编程 (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#。但这只是我的方法。它迫使我一次只考虑一个方面,真的——我还没有达到可以抽象出“方面”并以这些术语思考的地步。简而言之:自行开发或找到您喜欢的工具集,可能来自Eric Bodden's list。
【讨论】: