HTML5技术

ASP.NET没有魔法——ASP.NET MVC IoC - 7m鱼(2)

字号+ 作者:H5之家 来源:H5之家 2017-10-21 11:06 我要评论( )

在ASP.NET MVC中,使用依赖注入最频繁的就是Controller,Controller作为业务逻辑执行的入口,它依赖业务逻辑的组件,而业务逻辑组件又依赖数据操作组件等等。所以在ASP.NET MVC中使用依赖注入实际上就是把Controlle

  在ASP.NET MVC中,使用依赖注入最频繁的就是Controller,Controller作为业务逻辑执行的入口,它依赖业务逻辑的组件,而业务逻辑组件又依赖数据操作组件等等。所以在ASP.NET MVC中使用依赖注入实际上就是把Controller及其依赖都放入容器里,然后创建Controller时从容器中获取即可。根据Controller的创建流程将使用方法分为以下几种:
  1. 实现IDependencyResolver接口然后通过DependencyResolver.SetResolver方法修改默认的依赖解析器(替换默认的“注水口”)。
  2. 实现IControllerActivator接口,然后在创建DefaultControllerFactory时将其以参数的形式传入到DefaultControllerFactory中(在ControllerActivator中添加自己的“注水口”,并替换掉原有的ControllerActivator)。
  3. 继承DefaultControllerFactory使用从容器中获取Controller的方法将原有的GetControllerInstance方法替换掉(添加“注水口”放置在ControllerFactory中,放弃ControllerActivator的使用)。

  注:由于在Controller类型中包含一个IDependencyResolver属性,所以方法2和方法3没有替换默认依赖解析器会导致Controller中使用该属性无法访问到真实的容器,如果需要在其基础上使用方法1将默认的依赖解析器替换掉。

小结

  IoC容器和依赖注入在软件开发中是一个非常中要的概念,现在主流的一些开发框架的核心都是基于依赖注入的,即框架中的所有组件如日志、缓存、队列等都会通过容器将其注入到使用的地方。本章主要以文字的形式介绍了IoC、DI的概念及其在ASP.NET MVC中的使用的三种方法,在下一篇文章中将会用代码的形式介绍如何使用这三种方法在ASP.NET MVC中实现依赖注入。

参考:

  https://en.wikipedia.org/wiki/Inversion_of_control

本文连接: 

ASP.NET没有魔法——目录

ASP.NET没有魔法——ASP.NET MVC IoC代码篇

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 笨鸟先飞之ASP.NET MVC系列之过滤器(04认证过滤器过滤器) - 东城慕水

    笨鸟先飞之ASP.NET MVC系列之过滤器(04认证过滤器过滤器) - 东城慕水

    2017-10-18 14:09

  • 一张图理清ASP.NET Core启动流程 - 『圣杰』

    一张图理清ASP.NET Core启动流程 - 『圣杰』

    2017-10-09 18:00

  • ASP.NET Core 认证与授权[2]:Cookie认证 - 雨の夜

    ASP.NET Core 认证与授权[2]:Cookie认证 - 雨の夜

    2017-09-29 16:04

  • ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解 - 行动派Xdpie

    ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解 - 行动派Xdpie

    2017-09-15 17:05

网友点评
"