.NET中的AOP和动作过滤器

时间:2014-01-04 06:29:35

标签: c# asp.net .net aop postsharp

2个问题:

  1. MVC中的Action Filters是否考虑了面向方面编程(AOP)?
  2. 如果是这样,.NET是否为非MVC代码提供类似的东西(即常规类库?)
  3. 上下文是我想要将日志记录添加到应用程序。我没有在整个地方洒上日志记录代码,而是喜欢能够在一个中心位置定义登录规则的想法。

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

1 个答案:

答案 0 :(得分:9)

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

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

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