原文: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支撑的应用。但是在此之前,有一点是必须关注的,那就是测试。

转载于:https://www.cnblogs.com/xuquantong/p/3756250.html

(译)Windsor入门教程---第三部分 编写第一个Installer相关推荐

  1. MiniUI快速入门教程(二)编写第一个MiniUI程序:Hello, world!

    我们开始编写第一个MiniUI程序,代码如下: <!DOCTYPE html /> <html> <head><title> Hello MiniUI! ...

  2. C语言编程入门之--第三章编写第一个C语言程序

      导读:一般学一门计算机语言的第一堂上机课("上机"顾名思义,上计算机,机你太美),就是往屏幕输出"hello world",本章也不例外. 3.1 Hell ...

  3. Vivado 2018.3入门教程(三):生成比特流文件+硬件连接

    这是我的Vivado 2018.3入门教程(三):生成比特流文件+硬件连接 我的Vivado 2018.3入门教程大致分为四个部分: Vivado 2018.3入门教程(一):创建工程+新建源文件. ...

  4. socket 编程入门教程(三)TCP原理:5、TCP的三次握手(three-way handshake)

    socket 编程入门教程(三)TCP原理:5.TCP的三次握手(three-way handshake) 前面3个小节介绍了socket机制对TCP协议三次握手的实现,需要强调的是,与协议独立于实现 ...

  5. QR code 二维码基础入门教程(三)

    QR code 入门教程(三) 承接上文,我们已经说过了数据编码和纠错码的生成,接下来我们继续下面的步骤 结构化最终的数据 所谓的结构化(Structure),说白了就是如何把之前生成的数据排成一个比 ...

  6. 九宫怎么排列和使用_剪映零基础入门教程第三十七篇:一学就会系列之九宫格小程序配音...

    很多玩儿抖音的朋友都看过九宫格视频,但是并不是每个玩抖音的人都会制作这个九宫格视频,实际这个需要借助小工具来帮忙,而常用抖音的朋友们会对剪映更加熟悉一些,且九宫格视频在剪映内的制作方式则比较简单.那么 ...

  7. Cesium:入门教程(三)之视窗配置

    Scene 涉及到与 viewer.scene 进行交互,该类控制了viewer中的所有图形元素. 在初始化视图之前,先学下基本的cesium 类型: Cartesian3:三维笛卡尔直角坐标 – 当 ...

  8. Python机器学习算法入门教程(三)

    Python机器学习算法入门教程(三) 构建线性回归模型 一次函数 构建线性模型 假设函数图像 梯度下降求极值 导数 偏导数 梯度下降 sklearn应用线性回归算法 实现线性回归算法 准备数据 线性 ...

  9. 《零基础看得懂的C++入门教程 》——(1)第一个C++程序就让你知其所以然

    一.学习目标 了解第一个C++程序 了解第一个C++程序结构 了解什么是注释 了解什么是命名空间 了解C语言的输出(如何在程序运行时显示内容) 了解语句结束后需要使用什么符号表示结束 了解程序入口 目 ...

最新文章

  1. java cache缓存_涨姿势:为什么Java中“1000==1000”为false,而”100==100“为true?
  2. 运用深度学习教机器人理解自然语言
  3. 【自动驾驶】28.【右手坐标系】与【右手法则】分析、【右手法则的正方向】 与 【逆时针为正方向】 的分析
  4. C++中数字和字符串类型的转换
  5. oracle替代变量输出,【Oracle】替代变量
  6. 【C#/.NET】.NET6中全局异常处理
  7. 程序员为啥365天都背电脑包?这答案我服!
  8. EditText常用属性总结
  9. C++ 面向对象与面向过程的区别与联系
  10. 蓝桥杯 ADV-155 算法提高 上帝造题五分钟
  11. Loadrunner之-VirtualUserGenerator录制web程序脚本
  12. 黄聪:一个拼图工具的制作思路
  13. Hbase面试 描述 Hbase 中 scan 和 get 的功能以及实现的异同.
  14. mysql存过游标_mysql存储过程 游标 循环使用介绍
  15. 【分布式WebSocket - 1】超详细!WebSocket协议详解
  16. php 自己画地图,绘制自己的独家地图
  17. 都2022年你还不会安装系统?看我三分钟完事PE制作并进行Win11系统安装实践
  18. “科林明伦杯”哈尔滨理工大学暑假训练赛 B吃雪糕 (异或思维题)(补题)
  19. 《中文文本信息抽取模型与方法研究》5:基于论元结构的事件要素及其角色识别
  20. 基于Netty实现分布式IM即时通讯开发

热门文章

  1. Ubuntu18.04如何让桌面软件默认root权限运行?
  2. 【足迹C++primer】52、,转换和继承虚函数
  3. LINUX内核完全注释
  4. Quartus DSE 初步应用
  5. Vlan和vtp重要的配置命令
  6. (转)svn检出的时候报 Unable to connect to a repository at URL错误
  7. 51中断编程c语言,[新人求指教]51C语言编程可否用中断令循环结束提早结束
  8. python numpy矩阵索引_Numpy中的矩阵索引
  9. Apache 重写规则的常见应用 (rewrite)
  10. Jquery中的this是什么类型