.NET中的AOP和动作过滤器

hat*_*cyl 3 .net c# asp.net aop postsharp

2个问题:

  1. MVC中的动作过滤器是否被视为面向方面编程(AOP)?
  2. 如果是这样,.NET是否为非MVC代码提供类似的东西(即常规类库?)

上下文是我想要将日志记录添加到应用程序.我不喜欢在整个地方洒上日志代码,而是喜欢能够定义登录一个中心位置的规则.

似乎我可以使用AOP技术(PostSharp)实现这一目标.但是,如果.NET内置了一些内容,我可能最终会使用它.

Tho*_*ler 9

通常,AOP是一种编程范例,并且首先与MVC或PostSharp等特定技术无关.这说:是的,动作过滤器是这种范式的化身.

在纯.NET中,AOP可以通过使用自定义属性和反射来完成(意味着整个工作在运行时完成).相反,PostSharp是一个方面的编织器,并在编译时发挥其魔力,修改C#编译器的IL输出.因此,不会涉及任何运行时性能损失.此外,PostSharp还有许多预先构建的东西(例如日志记录),它更加类型安全且非常易于扩展.

可以使用纯.NET.但这与在赛车上使用驿马车相同.