zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    【解题报告】2019正睿Day2
    如何卡SPFA
    【游记】2019国庆清北刷题营
    CF427D Match & Catch
    P2178 [NOI2015] 品酒大会
    Loj#6071. 「2017 山东一轮集训 Day5」字符串
    SP8093 JZPGYZ
    P3346 [ZJOI2015]诸神眷顾的幻想乡
    CF1037H Security
    CF932F Escape Through Leaf
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4134334.html
Copyright © 2011-2022 走看看