原文:http://docs.castleproject.org/Windsor.Windsor-tutorial-ASP-NET-MVC-3-application-To-be-Seen.ashx

简介

在第二部分我们创建了控制器工厂。现在我们要把我们的控制器交给Windsor来管理。

Installer

Windsor有一个专门的类installer.cs,用来向容器注册组件。在你的应用程序中至少会有几个这样的installer类,所以要保持他们的代码整洁以及可见性。接下来在我们的应用程序中新建一个专门的文件夹"Installer"来存放这些类。我们首先要注册到容器中的就是控制器,所以我们先来新建一个ControllersInstaller.cs类。

Controller installer

Installer类需要为Windsor解决两个问题:怎么在应用程序中找到控制器和怎么配置控制器。

第一点,怎样找到控制器?很简单,在ASP.NET MVC中,控制器都是要实现Icontroller接口的。

配置起来很简单,首先,mvc框架要求我们为每一次的请求都创建一个新的控制器实例。而Windsor默认是只有在第一次请求的时候创建实例的。相应的installer类:

这个类重写了IwindsorInstaller的Install方法,通过Windsor的Fluent Registration API注册了控制器。这是我们推荐使用的,也是最简洁、最灵活的方法。每当我们在应用程序中新增加Controller(大的应用里可能会有几百个)的时候,Windsor会自动注册它们,我们不需要手动做任何事情,我们只要遵循Windsor的约定即可。

继续看代码,静态类Classes是进行注册的入口点,首先调用public类型的非抽象方法FromThisAssembly(),这是一个包含注册器的组件(mvc的组件,存在于控制器的生命周期中)。但是我们并不需要注册所有的组件,所以BasedOn<IContorller>过滤器要求类必须实现Icontroller接口,虽然叫BasedOn,但是它同样的也是一个泛型接口。最后是非常重要的一点----instance lifestyle。mvc希望的是使用过后即销毁,但每次Windsor需要的时候要有一个新的实例,而且通知Windsor在什么时候不需要实例,可以回收实例了是调用者的职责所在(这也是为什么我们在WindsorControllerFactory类里重写了ReleaseController方法)。

现在我们已经在Windsor注册了控制器的工作机制,并且有了控制器工厂来将控制器管理从Windsor卸载。在第四部分,我们将把这些组装在一起运行----一个由Windsor支撑的应用。但是在此之前,有一点是必须关注的,那就是测试。

最新文章

  1. PHP 过滤器
  2. opendove中的odgw所需要的内核模块
  3. Asp.Net判断字符是否为汉字的方法大全
  4. 虚幻4以及DX12将允许开发者利用Xbox One的更多性能(转)
  5. 有关Transaction not successfully started问题解决的方法
  6. js调试
  7. Linux学习笔记之权限与命令之间的关系(重要)及文件与文件夹知识总结
  8. [Unity] A* pathfinding project integrated with influence map
  9. 201521123100 《Java程序设计》第9周学习总结
  10. object类的equals方法简介 &amp; String类重写equals方法
  11. 离线Chrome插件安装文件(crx)的安装方法
  12. 1. 容器化部署一套云服务 第一讲 Jenkins(Docker + Jenkins + Yii2 + 云服务器))
  13. 视频拉流 Linux安装FFmpeg
  14. CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-7主节点CM安装子节点Agent配置
  15. NorFlash 学习
  16. Mac安装使用MongoDB
  17. PAT 甲级 1135 Is It A Red-Black Tree
  18. 自定义安装visual studio 2010开发asp.net
  19. 使用nvm-windows安装nodejs遇到的问题(转载)
  20. oracle 转置实现

热门文章

  1. asp.net如何删除文件夹及文件内容操作
  2. iOS开发 GET、POST请求方法:NSURLSession篇
  3. Object调用控件的办法
  4. TexturePacker license Key免费获取方式
  5. android下m、mm、mmm编译命令的使用
  6. zepto.js 学习之(一)
  7. javascript 总结学习一
  8. HDU 1043 八数码(八境界)
  9. Chapter 1 First Sight——14
  10. jvm attach