.NET MVC+IOC框架下基于构造器注入的原理分析
1、通过XML配置接口和实现类的映射关系,IOC容器初始化时读取配置,先反射遍历所有的程序集是否物理存在,如果不存在,抛出异常,流程终止。
2、IOC容器将遍历的结果以k-v的方式缓存在公共对象中,key是接口,value是实现类,假设变量名为kv1。
3、将需要IOC容器管控的调用者类型注册到IOC中,一旦调用者被请求,将被IOC拦截。
4、IOC容器遍历所有注册类的构造器,将构造器的参数也以k-v的方式缓存,假设变量名为kv2。
5、调用者被请求创建时,IOC容器获取到调用者类型,并且获取构造器函数的参数,通过索引key在kv2中找到对应的参数类型(接口),再通过参数类型在kv1中找到对应的实现,然后通过反射生成实例,注入到调用者的构造器中,最后创建调用者对象。
6、整个过程大概就是这样,主要涉及到几点内容: 1. XML文档遍历; 2. 反射机制; 3. 哈希表; 4. 拦截调用者请求; 5. 对调用者构造器进行依赖注入。
其中第4点需要特别注意,因为通常在B/S模式下,客户端都是以http的方式请求服务器,服务器再根据请求创建调用者实例,那么如何在默认的创建之前拦截请求,并且自行创建调用者对象,就成了构建IOC容器的关键。虽然IOC并不是MVC的专属搭档,但是由于MVC在自定义控制器方面的便捷性让IOC的拦截工作变得简单。 那么,早期的WebForm又该如何实现呢?其实也很简单。但本文重点阐述的是IOC+MVC的搭配,打字太累,就不细说了。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:69
阅读量:139
阅读量:104
阅读量:101
阅读量:148