尝试确定我的MVC应用程序采用哪条路径,并希望遵循AOP方法。任何人都可以解释Unity Custom拦截行为的优缺点并使用Enterprise Library 6。
现实世界实施的经验和教训将非常有用,谢谢。
答案 0 :(得分:0)
我认为AOP框架和Policy Injection模式之间存在一些混淆。有一件事是在Enterprise Library中使用处理程序管道,另一件事是在运行或编译时使用像Mono.Cecil或PostSharp这样的框架来更改程序的行为(即编织程序)。 / p>
来自MSDN网站:
自动创建代理的系统的实现 方法的处理程序管道类似于面向方面 编程(AOP)方法。但是,政策注入申请 Block不是以下的AOP框架实现 理由:
- 它使用拦截来仅启用预处理处理程序 和后处理处理程序。
- 它不会将代码插入方法中。
- 它不为类构造函数提供拦截。
如果你想增加对交叉问题的支持,使用自定义拦截/策略注入是很好的,但它有一个保留配置(例如注册)你的拦截器(在大代码库中可能有问题)的缺点。您还应该考虑性能方面。自定义拦截由EL在内部使用RealProxy类在内部处理,该类使用反射来调用已注册的方法。
使用纯AOP解决方案会有所不同,因为IL代码被发出并注入,因此它也应具有更好的性能。
答案 1 :(得分:0)
如果我得到正确的方法,你想要实现MVC项目,其中对于IoC(依赖注入)你想要使用UNITY框架,它将为你的交叉问题注入人工制品,例如异常处理或记录你想使用企业库。为了减少代码和易用性,AOP就是您想要的。
下面是对不同的.Net框架进行比较,利弊的链接,其中Unity当然是其中之一。
http://fukyo-it.blogspot.com.ar/2012/10/comparing-net-di-ioc-frameworks.html
以不正确的方式使用unity会导致性能问题。请看下面谈到性能的链接。
http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison
我曾使用企业库(管道机制)来解决交叉问题,最初使用Unity for DI但后来切换到StructureMap,因为它更轻量级。