(译)Windsor入门教程---第三部分 编写第一个Installer
简介
在第二部分我们创建了控制器工厂。现在我们要把我们的控制器交给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支撑的应用。但是在此之前,有一点是必须关注的,那就是测试。
(译)Windsor入门教程---第三部分 编写第一个Installer的更多相关文章
- C语言编程入门之--第三章编写第一个C语言程序
第三章 编写第一个C语言程序 导读:一般学一门计算机语言的第一堂上机课(“上机”顾名思义,上了计算机),就是往屏幕输出“hello world”,本章也不例外. 1.1 Hello,World! 这一 ...
- 超简单!pytorch入门教程(三):构造一个小型CNN
torch.nn只接受mini-batch的输入,也就是说我们输入的时候是必须是好几张图片同时输入. 例如:nn. Conv2d 允许输入4维的Tensor:n个样本 x n个色彩频道 x 高度 x ...
- WCF入门教程(三)定义服务协定--属性标签
WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...
- Docker入门教程(三)Dockerfile
Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...
- SQLite 入门教程(三)好多约束 Constraints(转)
转于: SQLite 入门教程(三)好多约束 Constraints 一.约束 Constraints 在上一篇随笔的结尾,我提到了约束, 但是在那里我把它翻译成了限定符,不太准确,这里先更正一下,应 ...
- 【知识整理】这可能是最好的RxJava 2.x 入门教程(三)
这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) GitHub 代码同步更新:ht ...
- Photoshop入门教程(三):图层
学习心得:图层可以说是Photoshop的核心,看似简单,但是对于图像的各种编辑都是基于图层.他就像一层透明的.没有厚度的玻璃纸,每张玻璃纸设置不同的效果,层层叠加,最后显现出绚烂的效果. 在进行图像 ...
- Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导
Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 Veins(车载通信仿真框架)入门教程(三)——多跳路由实现指导 必要的message类实现 从下面开始是在veins/src/vei ...
- .NET Core快速入门教程 2、我的第一个.NET Core App(Windows篇)
一.前言 本篇开发环境?1.操作系统: Windows 10 X642.SDK: .NET Core 2.0 Preview 二.安装 .NET Core SDK 1.下载 .NET Core下载地址 ...
随机推荐
- tablehost
返回键的拦截 @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEven ...
- C# tostring()汇总
原文:http://www.cnblogs.com/xiaopin/archive/2010/11/05/1870103.html C 货币 2.5.ToString("C") ¥ ...
- OpenGL网络资源
转 十大OpenGL教程 1.http://nehe.gamedev.net/这个是我觉得全世界最知名的OpenGL教程,而且有网友将其中48个教程翻译成了中文http://www.owlei.com ...
- KVO 进阶
Key-value coding (KVC) 和 key-value observing (KVO) 是两种能让我们驾驭 Objective-C 动态特性并简化代码的机制.在这篇文章里,我们将接触一些 ...
- python顶级执行代码
只有主程序中由大量顶级执行代码(即没有被缩进的代码行),所有其他被导入的模块只应该又很少的顶级执行代码. 如果模块是被导入,__name__就是模块名. 如果模块是被直接执行,__name__就是__ ...
- HDU 3594 Cactus (强连通分量 + 一个边只能在一个环里)
题意:判断题目中给出的图是否符合两个条件.1 这图只有一个强连通分量 2 一条边只能出现在一个环里. 思路:条件1的满足只需要tarjan算法正常求强连通分量即可,关键是第二个条件,我们把对边的判断转 ...
- IOS小工具以及精彩的博客
IOS小工具以及精彩的博客 工具 Log Guru是一个收集Log的小工具, 可以在 Mac 上查看 iOS 设备的实时系统日志. 现在可以直接高亮显示在 FIR.im 上安装 app 失败的原因.后 ...
- HDU 5722 Jewelry
矩形面积并. 需要转化一下思路:记录每一个位置的数以及位置. 对数字进行从小到大排序,数字一样的按位置从小到大排. 这样,一样的数就在一起了.连续的相同的x个数就可以构成很多解,这些解对应于二维平面上 ...
- Servlet程序开发--WEB开发模式(Mode I, Mode II)
Mode I: 就是在开发中,将显示层,控制层,数据层的操作统一交给JSP或JavaBean来进行处理. 客户端通过访问JSP,调用里面的JavaBean,而通过JavaBean调用数据库,在Java ...
- ecb gud
mx gdb不好用,好像是因为用了一个dedicated window,改用mx gud-gdb,好用. http://stackoverflow.com/questions/13560933/how ...