首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义Unity拦截行为或企业库块,哪个更适合AOP?

自定义Unity拦截行为或企业库块,哪个更适合AOP?
EN

Stack Overflow用户
提问于 2015-03-13 06:48:07
回答 2查看 334关注 0票数 0

正在尝试决定为我的MVC应用程序选择哪条路径,并希望遵循AOP方法。有人能解释Unity自定义拦截行为和使用Enterprise Library 6的优缺点吗?

从现实世界的实施中获得的经验和教训将非常有用,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-03-29 09:29:18

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

来自MSDN网站:

自动为方法创建代理和处理程序管道的系统实现

类似于面向方面编程(AOP)方法。但是,由于以下原因,策略注入应用程序块不是AOP框架实现:

  • 它使用侦听只启用预处理处理程序和后处理处理程序。
  • 它不将代码插入到方法中。
  • 它不为类构造函数提供侦听。

如果你想添加对横切关注点的支持,使用自定义拦截/策略注入是很好的,但它有保留配置(例如注册)拦截器(这在大型代码库中可能是一个问题)的缺点。您还应该考虑到性能方面。自定义拦截由EL使用RealProxy类在内部处理,该类使用反射来调用已注册的方法。

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

票数 0
EN

Stack Overflow用户

发布于 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,因为它更轻量级。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29021759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档