在C#/。Net中进行面向方面编程(AOP)的最佳/最受欢迎的方法是什么?

时间:2020-03-06 14:43:36  来源:igfitidea点击:

在C#/。Net中进行面向方面编程(AOP)的最佳/最受欢迎的方法是什么?

解决方案

我已经尝试过自己动手做一些不同类型的事情。我有些运气了。通常,我制作一个接口,用一个类实现它,然后制作一个实现该接口的代理,执行我想要的任何准备工作步骤,调用真实对象的方法,然后执行我想要的任何后置条件步骤。我的主要烦恼之一是我们不能在接口中使用构造函数,也不能在接口中使用静态方法,因此放置这种类型的代码没有明显的地方。难的部分是代码生成,因为我们或者要发出IL,或者要发出必须编译的C。但这只是我的方法。而且这迫使我一次思考一个方面,实际上我还没有到达可以抽象出"方面"并以这些方式思考的地步。简而言之:也许可以从Eric Bodden的清单中自己动手或者找到自己喜欢的工具集。

  • Castle的DynamicProxy可能是在CLR上执行AOP的最常用的工具。
  • Spring框架还通过其Spring.Aop名称空间提供AOP功能。

Postsharp是另一个著名的例子:"将AOP引入.NET!"我只有很少的经验,但是看起来不错,值得一看。

PostSharp很好。我已经使用了大约一年了。考虑到它所具有的几乎神似的功能,它易于安装并且学习曲线相当浅。此外,似乎既有活跃的开发人员社区,又有响应式开发人员。

在PostSharp主页上查看代码示例。这些是用PostSharp完成的简单方面的很好的例子。

我已经使用Spring.Net AOP Framework大约9个月了。它非常强大,即使在运行时而不是在编译过程中进行编织,使用中也不会造成性能损失。唯一需要注意的是,尽管我们正在应用建议的对象不需要了解Spring.Net AOP,但它们必须实现至少一个接口。该文档通常对Spring.Net来说是非常好的,它指出此限制将在将来的版本中删除,但没有给出路线图。

Spring.Net AOP不需要我们使用Spring.Net框架的其余部分,并且可以单独使用。