.Net IOC 之Unity

.Net IOC 之Unity

在码农的世界里,为了应付时常变更的客户需求,增加的架构的客扩展性,减少工作量。IOC诞生了,它是一种可以实现依赖注入和控制对象生命周期的容器。最为一个有节操、有追求的码农来说,掌握几种IOC以来注入的技术是必不可少的。帅的人至少要会两种以上。在.net世界里,如今常用的注入容器有Unity、Autoface、Ninject当然Spring.net也算。
在没有IOC之前,伟大的码农们,大多数软件开发都使用DI手动完成构造函数、属性、方法的依赖,来实现解耦,通俗易懂的话就是完全的接口编程。

今天我们了解一下Unity,Unity是微软的一种用于C#实现的依赖注入容器,可通过Xml文件或代码来建立对象之间的关系在运行时直接调用容器,便可获取依赖产生的对象,建立耦合度较低的应用程序。Microsoft.Practices.Unity.dll和Microsoft.Practices.Unity.Configuration.dll这两个程序集是Unity里面的集成类库,用于Unity对象操作和配置的类库。

使用Unity的好处就是调用方法时将相应的controllerType传递给Unity容器,Unity容器便会自己完成对象创建的操作,并将对象返回给请求。再也不用考虑如何对象从哪里来的问题。Unity在管理生命周期时创建对象自带了Transient(瞬态)、Singleton(单例)两种方式,从字面上看,transient在用户每次请求容器中对象时,都会创建新的对象,完成相应后会自动销毁,而SingleTon它不会立即销毁会供多个应用请求提供相同的对象。你可以把这两种产生的对象,想象成request和application产生的对象,有点类似。
下面结合.NetMvc4举个例子来看一下它的使用:

1、使用NUGET获取并安装Unity,如图:

安装完后在引用中可以看到Unity的两个重要的DLL程序集,并生成Bootstrap.cs引导文件, 下面我们可以开始我们的 编程了,这次使用xml配置Unity。

2、建立项目工程,如图:

顺序没排好,正确顺序如下:

(1)MvcIOCUnity MVC —— 应用程序

(2)ImpLab  ——仓储的实现类

(3)RepositoryLab —— 方法仓储接口

(4)ModelLab——基础对象模型类

程序从下而上进行编码:

ModelLab——基础对象模型类,中创建模型

 View Code
 View Code

RepositoryLab —— 方法仓储接口

 View Code

 ImpLab  ——仓储的实现

 View Code

 MvcIOCUnity MVC —— 应用程序

第一步配置Uinit

 Unity xml 配置

第二步在BootStrap中读写Xml配置生成容器,并在Global中注册,让网站启动时便将容器准备完毕。

 Bootstrap调用xml创建容器
 Global注册

第三步 创建UnityDependencyResolver

 DependencyResolver.SetResolver(new UnityDependencyResolver(container));这行代码用于解析装载为Mvc依赖关系提供了一个解析程序的接口。参数必须是个继承IDependencyResolver的对象。

 创建UnityDependencyResolver

第四步 通过DefaultControllerFactory工厂获取ContorllerType和请求上下文,使用IUnityContainer进行解析

 创建UnityControllerFactory

第五步 使用容器创建的对象

 创建FamilyController

第六步创建试图,收工

源代码奉上:http://pan.baidu.com/s/1i3L1kd3

 





 

 

 

 
标签: IOC UNITY

原文地址:https://www.cnblogs.com/Leo_wl/p/4134334.html