初识Web框架--IOC机制是什么东东

Web开发框架中控制反转(Inversion Of Control,英文缩写为IOC)是框架的重要特征,MVC 路由映射通过反射实现控制反转,映射Controller和Action。
什么是IOC
IOC 能做什么
IOC原理
IOC容器技术
结语
什么是IOC

1996年,Michael Mattson在一篇有关探讨面向对象框架的文章中,首先提出了IOC 这个概念。IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖关系的对象之间的解耦,它起到了一种类似“粘合剂”的作用,把系统中的所有对象粘合在一起发挥作用,如果没有这个“粘合剂”,对象与对象之间会彼此失去联系,这就是有人把IOC容器比喻成“粘合剂”的由来。

IOC 能做什么

IoC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

IOC原理

简单来说就是把复杂的系统分解成可以相互合作的对象,在这些对象进行封装之后,就实现内部对外部的透明,这样就解决了问题的复杂程度。
IOC的理论观点如图:
IOC原理
图中表达的意思是,在把各个对象类进行封装之后,通过IOC容器来关联这些对象类。这样子对象与对象之间就是通过IOC进行联系,从而减少了对象与对象的直接关系。
DIP
.NET MVC反射与工厂模式实现IOC

1、反射可以实现动态创建对象和编译,这种编程方式可以让对象在生成时才被决定到底是哪一种对象,体现出很大的灵活性。

2、把IOC容器的工作模式看做是工厂模式的升华,可以把IOC容器看作是一个工厂,这个工厂里要生产的对象都在配置文件中给出定义,然后利用编程语言提供的反射机制,根据配置文件中给出的类名生成相应的对象。

MVC IOC

如图中:CreateControlFactory控制器工厂,工厂中通过反射可以寻到项目所有控制器,源码请见.net MVC源码库。

IOC容器技术

Web开发框架中,我们提供structuremap和unity两种IOC组件, SturctureMap我们要做的基本的事是,声明一些抽象或接口,还有一些实际中我们具体实现类。比方说我们对配置类抽象时IConfiguration,我们实际想用Configuration这个具体的类。 在添加一个SturctureMap.dll的引用后,最简单地配置它的形式是像这样:

ObjectFactory.Configure(x => x.For <iconfiguration>().Use<configuration>());

当我们想创建具体实现时,只要向容器发请求:
var config = ObjectFactory.GetInstance<configuration>();

结语

1、由于IOC容器生成对象是通过反射方式,在运行效率上有一定的损耗。
2、具体到IOC框架产品(比如SturctureMap)来讲,一次性配制好,熟悉调用函数既可以很方便快捷的使用。
3、原理:基于DI设计原则,运用工厂设计模式和反射机制来实现。

网站&系统开发技术学习交流群:463167176

本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
转载请注明:文章转载自:华晨软件-云微开发平台 » 初识Web框架-IOC机制是什么东东
本文标题:初识Web框架--IOC机制是什么东东
本文地址:http://www.hocode.com/OrgTec/back/0007.html

相关文章: web框架UI系列--216 Web安全色 ¦

电话
电话 18718672256

扫一扫
二维码