代码改变世界

【原】(一)Unity 2.0 IOC容器入门教程

2010-05-22 10:03  bugfly  阅读(5259)  评论(20编辑  收藏  举报

    写这篇入门教程的原因是,发觉国内很少有介绍Unity 2.0的文章,大部分是介绍Unity 1.0的,相对比较旧了,而2.0和1.0存在多多少少的差别,如一些配置符在2.0被除去了,要学习2.0就只能从英文的网站获得,基于能更好地带大家入门,所以就写一篇简单的教程。

   教程流程

      (1)IOC介绍。

     (2)布局项目。

     (3)安装Unity 2.0、引入到项目中。

     (4)配置信息。

     (5)加载容器。

     (6)项目使用。

     (7)结语。

 

一、IOC介绍。

   IOC(Inversion of Control)

  中文译为控制反转

  又称为“依赖注入”(DI =Dependence Injection)

  IOC的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。

  其原理是基于OO设计原则的The Hollywood Principle:Don't call us, we'll call you(别找我,我会来找你的)。也就是说,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。

  简单的来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

二、布局项目。

  由于我比较爱好web开发,所以我就建一个WebForm的Deom项目来演示,布局结构很简单,主要是为了大家能更好地理解这个使用流程。

项目总体架构图

 

Default.aspx页面



IPeople接口

 

 

IWeapon接口

 

 

具体的Gun类

 

具体的Sword类
 

 

具体的ChinesePeople类


具体的BackPeople类


三、安装Unity 2.0、引入到项目中。

  到微软下载Unity 2.0或者可以去其他提供下载的网站下载,安装过程我就不截图解释了。把所需要的库添加到项目下,我们需要的是Microsoft.Practices.Unity和Microsoft.Practices.Unity.Configuration两个库,右击添加引用。

Untity 2.0下载http://www.microsoft.com/downloads/details.aspx?FamilyId=2d24f179-e0a6-49d7-89c4-5b67d939f91b&displaylang=en

  


四、配置信息。

大致的配置我直接上图,再一一简要解释。

 

 

 

这里要注意的是,Version=版本一定要和你下载的库的版本一致,不然是不能成功生成容器的。我使用的是2.0.414.0版本的库,所以这里的Version=2.0.414.0 一定要看清楚!

 

    这里主要作用就绑定了具体对象的引用关系,也是IOC容器的作用,把变化隔离出程序,转由外部文件负责,降低了程序的维护成本。提示:这段配置我是放在web.config里面,你用XML配置也可以,都一样。

 

    而具体的标签作用我就不多解释了,2.0的标签已经做到很人性化,如果实在不懂,就请耐心研究帮助文档,不过暂时没有发现有中文版。

Unity 2.0 英文帮助文档下载地址:http://unity.codeplex.com/releases/view/31277


五、加载容器。

添加Global.asax文件,具体里面的内容如下截图。


 

六、项目使用。

具体code-behind代码Default.aspx.cs


 

具体运行Default.aspx页面效果

 

点击了中国人按钮响应效果

点击了黑人按钮响应的效果

 

七、结语。

  希望这个简单的教程能对你有所帮助,教程的源码我有保留,有需要的朋友可以HI我,或者留言,留下邮箱也OK。最后我希望能结识热爱交流技术的朋友,本人创建的技术交流群:9202507 欢迎你的加入!