Asp.net mvc 4 自定义Unity拦截行为或企业库块,哪一个更适合AOP?

Asp.net mvc 4 自定义Unity拦截行为或企业库块,哪一个更适合AOP?,asp.net-mvc-4,aop,enterprise-library,unity-interception,cross-cutting-concerns,Asp.net Mvc 4,Aop,Enterprise Library,Unity Interception,Cross Cutting Concerns,尝试决定MVC应用程序的路径,并希望遵循AOP方法。谁能解释一下Unity自定义拦截行为和使用Enterprise Library 6的利弊吗 来自现实世界实施的经验和教训将非常有用,谢谢。我认为AOP框架和策略注入模式之间存在一些混淆。一种是在企业库中使用处理程序管道,另一种是使用Mono.Cecil或PostSharp等框架在运行或编译时更改程序的行为(即编织程序) 从MSDN网站: 自动创建代理和 方法的处理程序管道类似于面向方面的 编程(AOP)方法。但是,策略注入应用程序 块不是以下对

尝试决定MVC应用程序的路径,并希望遵循AOP方法。谁能解释一下Unity自定义拦截行为和使用Enterprise Library 6的利弊吗


来自现实世界实施的经验和教训将非常有用,谢谢。

我认为AOP框架和策略注入模式之间存在一些混淆。一种是在企业库中使用处理程序管道,另一种是使用Mono.Cecil或PostSharp等框架在运行或编译时更改程序的行为(即编织程序)

从MSDN网站:

自动创建代理和 方法的处理程序管道类似于面向方面的 编程(AOP)方法。但是,策略注入应用程序 块不是以下对象的AOP框架实现 原因:

  • 它使用拦截只启用预处理处理程序 和后处理处理程序
  • 它不会在方法中插入代码
  • 它不为类构造函数提供拦截
如果您想添加对横切关注点的支持,那么使用自定义拦截/策略注入是很好的,但它有保留配置(例如注册)拦截器(这在大型代码库中可能是一个问题)的后遗症。您还应该考虑性能方面。自定义截取由EL使用类在内部处理,该类使用反射调用已注册的方法


使用纯AOP解决方案会有所不同,因为IL代码是发射和注入的,所以它也应该有更好的性能。

如果我的方法正确,您希望实现MVC项目,其中针对IoC(依赖项注入)您希望使用UNITY框架,它将为您的横切关注点注入人工制品,如异常处理或日志记录,您希望使用企业库。对于代码缩减和易用性,AOP是您想要的方式

下面的链接比较了不同.Net框架的优缺点,当然是其中之一

不正确地使用unity可能会导致性能问题。看看下面关于性能的链接

我曾将企业库(管道机制)用于横切关注点,最初将Unity用于DI,但后来切换到StructureMap,因为它更轻量级