0

试图决定为我的 MVC 应用程序采用哪条路径并希望遵循 AOP 方法。谁能解释 Unity Custom 拦截行为和使用 Enterprise Library 6 的优缺点。

现实世界实施的经验和教训将非常有帮助,谢谢。

4

2 回答 2

0

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

下面的链接对不同的 .Net 框架进行了比较、优缺点,当然 Unity 也是其中之一。

http://fukyo-it.blogspot.com.ar/2012/10/comparing-net-di-ioc-frameworks.html

以不正确的方式使用统一会导致性能问题。看看下面关于性能的链接。

http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison

我曾使用 Enterprise 库(管道机制)来解决横切问题,最初使用 Unity 进行 DI,但后来切换到 StructureMap,因为它更轻量级。

于 2015-04-02T11:29:06.333 回答
0

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

从 MSDN 网站:

为方法自动创建代理和处理程序管道的系统的实现类似于面向方面的编程 (AOP) 方法。但是,Policy Injection Application Block 不是 AOP 框架实现,原因如下:

  • 它使用拦截来仅启用预处理处理程序和后处理处理程序。
  • 它不会将代码插入方法中。
  • 它不为类构造函数提供拦截。

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

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

于 2015-03-29T01:29:18.247 回答