(译)Windsor入门教程---第三部分 编写第一个Installer
2014-05-28 00:31
309 查看
原文:http://docs.castleproject.org/Windsor.Windsor-tutorial-ASP-NET-MVC-3-application-To-be-Seen.ashx
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/d062c49021e5e27fb1c1ab10b4931bf9.png)
第一点,怎样找到控制器?很简单,在ASP.NET MVC中,控制器都是要实现Icontroller接口的。
配置起来很简单,首先,mvc框架要求我们为每一次的请求都创建一个新的控制器实例。而Windsor默认是只有在第一次请求的时候创建实例的。相应的installer类:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/36b183056f58d964d6a71b3150ebf0fd.png)
这个类重写了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
Windsor有一个专门的类installer.cs,用来向容器注册组件。在你的应用程序中至少会有几个这样的installer类,所以要保持他们的代码整洁以及可见性。接下来在我们的应用程序中新建一个专门的文件夹"Installer"来存放这些类。我们首先要注册到容器中的就是控制器,所以我们先来新建一个ControllersInstaller.cs类。![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/d062c49021e5e27fb1c1ab10b4931bf9.png)
Controller installer
Installer类需要为Windsor解决两个问题:怎么在应用程序中找到控制器和怎么配置控制器。第一点,怎样找到控制器?很简单,在ASP.NET MVC中,控制器都是要实现Icontroller接口的。
配置起来很简单,首先,mvc框架要求我们为每一次的请求都创建一个新的控制器实例。而Windsor默认是只有在第一次请求的时候创建实例的。相应的installer类:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/36b183056f58d964d6a71b3150ebf0fd.png)
这个类重写了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支撑的应用。但是在此之前,有一点是必须关注的,那就是测试。
相关文章推荐
- 编写你的第一个Django应用, 第三部分 - Django 1.11 教程
- ExtJs5.0在WebStorm上的使用之入门教程(一)编写第一个网页 HelloExt
- 【译】Django官方教程——编写你的第一个Django app,部分1
- Django 2.0.1 官方文档翻译: 编写你的第一个 Django app,第三部分(Page 8)
- (译)Windsor入门教程---第一部分 获取Windsor
- RabbitMQ官方中文入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)
- Django官方教程(五)【创建你的第一个 Django 项目,第三部分】
- 10.Django入门:高级教程-编写Django的第一个补丁
- (译)Windsor入门教程---第五部分 添加日志功能
- MiniUI快速入门教程(二)编写第一个MiniUI程序:Hello, world!
- RabbitMQ官方中文入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)
- RabbitMQ官方中文入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)
- Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)
- (译)Windsor入门教程---第四部分 整合
- Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)
- 易语言新手入门教程第十五课 - QQ自动登录器第三部分
- 【翻译】编写第一个Django app,第三部分——玩转模型层的API
- ReactiveCocoa入门教程:第三部分
- Angular2入门系列教程2-项目初体验-编写自己的第一个组件
- swift教程【入门】 使用xcode playground编写第一个swift程序