一、IOC控制反转
1、IOC的概念
- IOC-Invertion of Control,即控制反转,是一种程序设计思想。
- 依赖(Dependency):就是有联系,表示一个类依赖于另一个类。
- 依赖倒置原则(DIP):设计模式六大原则之一,是一种软件架构设计原则。
- 控制反转(IOC):一种软件设计原则,上层对下层的依赖(即底层模块的获得)交给第三方。
- 依赖注入(DI):实现IOC的一种方式、手段。
- IOC容器:依赖注入的框架,用来映射依赖,管理对象创建和生存周期。
2、IOC的原理
- 反射概念:反射概念反射是一种编程的方式,让程序员可以在程序运行期间获得程序(Assembly)、模块(Module)、类型(class)的组成部分的相关信息,查找类型信息,并创建该类型的实例。
- 当一个类的实例需要另一个类的实例协助时,在传统的程序设计过程中,通常有调用者来创建被调用者的实例。然后,采用依赖注入原则,创建被调用者的实例的工作不再由调用者完成,而是由IOC容器来完成,这就是“控制反转”的意思,然后,将其注入调用者,因此也称为“依赖注入”。
- IOC中实例化对象默认是单例模式。
- 依赖注入的核心是靠反射的原理实现。
3、依赖注入IOC常用的框架
- Unity MEF Autofac Spring
4、IOC优点
- 动态创建、注入依赖对象。
- 管理对象生命周期。
- 映射依赖关系。
- 实现组件之间的解耦,提高程序的灵活性和可维护性
5、IOC缺点
- 在刚开始使用IOC框架的时候会感觉系统变的不直观。引入一个全新的框架,会增加团队成员学习成本,并且在以后的运行维护中还要让新加入者具备同样的知识体系。
- 由于IOC容器生成对象是通过反射方式,在运行效率上有一定的损耗。
- 具体到IOC框架产品(比如:Autofac)需要进行大量配置工作比较繁琐,对于一些小的项目而言客观上也可能加大一些工作成本。
- IOC框架产品本身的成熟度需要进行评估,如果引入一个不成熟的IOC框架产品,可能会影响到整个所以这也是一个隐形的风险。
二、Autofac简述
1、Autofac
- Autofac是.NET领域最为流行的IOC框架之一。
- Autofac框架依赖于Autofac.dll和Autofac.Integration.Mvc.dll文件。
优点:
- 跟C#语言联系紧密,C#里的很多编程方式都可以为Autofac使用。
- 学习简单,只要理解IOC和DI的概念以及在何时需要使用它们。
- XML、属性配置。
- 与Asp.Net Mvc集成。
2、Autofac使用
- 获取AutoFac,可以通过各种方式加载它:通过VS中的NuGet来加载AutoFac,添加Autofac.dll,Autofac.Configuration.dll两个程序集引用到项目中。
- 新建一个MVC项目,使用nuget安装autofac,需要安装autofac和autofac ASP.NET Mvc5 Intergration 如下:
- 安装完成后引用里面就多了Autofac.dll和 Autofac.Integration.Mvc.dll文件。
- 在WEBAPI里使用需要安装Autofac ASP.Net Web API2.2Intergration才可以。
3、AutoFac使用
4、AutoFac使用