正在尝试决定为我的MVC应用程序选择哪条路径,并希望遵循AOP方法。有人能解释Unity自定义拦截行为和使用Enterprise Library 6的优缺点吗?
从现实世界的实施中获得的经验和教训将非常有用,谢谢。
发布于 2015-03-29 09:29:18
我认为在AOP框架和策略注入模式之间存在一些混淆。一件事是在企业库中使用处理程序管道,另一件事是使用像Mono.Cecil或PostSharp这样的框架在运行或编译时更改程序的行为(即编织程序)。
来自MSDN网站:
自动为方法创建代理和处理程序管道的系统实现
类似于面向方面编程(AOP)方法。但是,由于以下原因,策略注入应用程序块不是AOP框架实现:
如果你想添加对横切关注点的支持,使用自定义拦截/策略注入是很好的,但它有保留配置(例如注册)拦截器(这在大型代码库中可能是一个问题)的缺点。您还应该考虑到性能方面。自定义拦截由EL使用RealProxy类在内部处理,该类使用反射来调用已注册的方法。
使用纯AOP解决方案会有所不同,因为会发出和注入IL代码,因此它也应该具有更好的性能。
发布于 2015-04-02 19:29:06
如果我没弄错的话,你想要实现一个MVC项目,在这个项目中,对于IoC (依赖注入),你想要使用UNITY框架,它将为你的横切关注点注入工件,比如你想要使用企业库的异常处理或日志记录。为了减少代码和易于使用,AOP是您想要的方式。
下面的链接对不同的.Net框架进行了比较,利弊比较,当然也是其中之一。
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用于DI,但后来切换到StructureMap,因为它更轻量级。
https://stackoverflow.com/questions/29021759
复制相似问题