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

原文: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 ASP.NET Core 中使用 Serilog 使用 Fluentd 将日志写入 Elasticsearch

在 ASP.NET Core 中使用 Serilog 使用 Fluentd 将日志写入 Elasticsearch原文来自&#xff1a;https://andrewlock.net/writing-logs-to-elasticsearch-with-fluentd-using-serilog-in-asp-net-core/对于在 Kubernetes 中运行的应用程序&#xff0c;将日志消息存储在一个中心位…

2021年度最全面JVM虚拟机,类加载过程与类加载器

前言 类装载器子系统是JVM中非常重要的部分&#xff0c;是学习JVM绕不开的一关。 一般来说&#xff0c;Java 类的虚拟机使用 Java 方式如下&#xff1a; Java 源程序&#xff08;.java 文件&#xff09;在经过 Java 编译器编译之后就被转换成 Java 字节代码&#xff08;.class …

做生意最重要的诚信呢??? | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源网络&#xff0c;侵权删&#xff09;

从笑话中看到产品创意

西贝在公司的洗手间中看到了2则笑话&#xff0c;体会出来笑话的另一个含义&#xff0c;其实它和产品有很多相似之处的。第一则&#xff1a;某学校的小师妹看上了校中的师兄帅哥&#xff0c;决定主动追求。小师妹遇上之后主动搭讪“师兄&#xff0c;有女朋友吗&#xff1f;”帅哥…

快速配置Ehcache

1. 编写ehcache.xml文件&#xff0c;将该文件放置于classpath路径下。代码如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?><ehcache> <!-- 缓存文件生成之后所放置的路径 --> <diskStore path"D:/Develop/tomcat-6…

.NET 6 预览版 7 发布--(最后一个预览版)

原文&#xff1a;bit.ly/2VJxjxQ作者&#xff1a;Richard翻译&#xff1a;精致码农-王亮说明&#xff1a;文中有大量的超链接&#xff0c;这些链接在公众号文章中被自动剔除&#xff0c;一部分包含超链接列表的小段落被我删减了&#xff0c;如果你对此感兴趣&#xff0c;请参考…

面试避坑手册之 Java字节流和字符流总结IO流!

从接收输入值说起 在日常的开发应用中&#xff0c;有时候需要直接接收外部设备如键盘等的输入值&#xff0c;而对于这种数据的接收方式&#xff0c;我们一般有三种方法&#xff1a;字节流读取&#xff0c;字符流读取&#xff0c;Scanner 工具类读取。 字节流读取 直接看一个…

这家AI公司用面具破解中国人脸识别系统!微信、支付宝、火车站无一幸免

全世界只有3.14 % 的人关注了青少年数学之旅据外媒报道&#xff0c;一家人工智能公司Kneron用一个特制的3D面具&#xff0c;成功欺骗了包括支付宝和微信在内的诸多人脸识别支付系统&#xff0c;完成了购物支付程序。他们用同样的方式甚至进入了中国的火车站。现如今&#xff0c…

coolite TreeNode NodeClick传id到后台的方法

重点如下&#xff1a; 1 <AjaxEvents>2 <Click OnEvent"PanelTree_Click" >3 <EventMask ShowMask"true" Msg"正在执行,请稍后" />4 <E…

使silverlight适应IE窗口大小的方法

Pete Brown在它的BLOG中提到了一个按自定义比例使用silverlight适应IE窗口大小的方法 原文如下&#xff1a;How to Resize a Silverlight 2 App and Keep the Same Aspect Ratio 其核心代码如下&#xff08;Xaml&#xff09;&#xff1a; <UserCon…

使用JavaScript实现页面选项自动添加行以及删除行 javaweb

2019独角兽企业重金招聘Python工程师标准>>> <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"reques…

C#基础知识之base、this、new、override、abstract梳理

一、Base关键词的几种用法base重要用于OOP的多态上&#xff0c;base 关键字用于在派生类中实现对基类公有或者受保护成员的访问&#xff0c;但是只局限在构造函数、实例方法和实例属性访问器中1、base调用基类构造函数using System;namespace BaseDemo {class Program{static v…

班主任老师推荐这些优质的教育号,建议家长们多阅读!

全世界只有3.14 % 的人关注了青少年数学之旅推荐几个教育类学习号让孩子少走弯路&#xff0c;为孩子成长保驾护航&#xff01;长按二维码&#xff0c;选择【识别图中二维码】关注理想父母 lixiangfumu&#xff08;长按二维码识别关注&#xff09;关注理由&#xff1a;面向家长…

【转】ArcGIS.Server.9.2.DotNet的ADF的Toolbar工作过程分析

目的&#xff1a;1.ArcGIS.Server.9.2.DotNet的ADF的Toolbar工作过程原理。开始&#xff1a;Toolbar工作过程&#xff1a;一.初始化过程&#xff08;在页面生成的时候Toolbar控件会生成和它相关的html代码和javascript代码&#xff09;&#xff1a; 1.根据每一个子Tool生成…

学妹问我Java枚举类与注解,我直接用这个搞定她!

很多人问我学妹长什么样&#xff0c;不多说 上图吧&#xff01; 学妹问我Java枚举类与注解&#xff0c;我直接一篇文章搞定&#xff01;一、枚举类① 自定义枚举类② enum关键字定义枚举类③ enum 枚举类的方法④ enum 枚举类实现接口二、注解① 生成文档相关注解②注解在编译…

[转]张孟苏考上的不是大学

原文&#xff1a;http://blog.sina.com.cn/s/blog_4910bb430100a5gy.html 张孟苏考因为助人为乐得到来新加坡读书的机会&#xff0c;作为一个在新加坡生活了十年的人&#xff0c;我向她表示祝贺。但为了对社会负责&#xff0c;对读者负责&#xff0c;我决定写这篇文章。 许多人…

bitmapdata的知识点

flashplayer的cpu渲染 bitmapData占用的内存分两块&#xff0c;一块是原始数据区&#xff0c;另一块是解压后的内存区10秒内如果没有使用这个bitmapdata&#xff0c;解压后的内存区会被释放&#xff0c;当10秒后重新使用&#xff0c;这个bitmapdata会再次解压&#xff0c;所以就…

设计模式之代理

代理模式介绍啥是代理模式&#xff1f;代理模式 是一种结构型设计模式&#xff0c;让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问&#xff0c;并允许在将请求提交给对象前后进行一些处理。其实说通俗点&#xff0c;就好比我们平时生活中的购买机票&#xff…

PHP 的历史

PHP/FI PHP 继承自一个老的工程&#xff0c;名叫 PHP/FI。PHP/FI 在 1995 年由 Rasmus Lerdorf 创建&#xff0c;最初只是一套简单的 Perl 脚本&#xff0c;用来跟踪访问他主页的人们的信息。它给这一套脚本取名为“Personal Home Page Tools”。随着更多功能需求的增加&#x…

linux主要系统服务介绍

linux主要系统服务介绍 apmd&#xff0d;&#xff0d;apmd用来监视系统用电状态&#xff0c;并将相关信息通过syslogd写入日志。也可以用来在电源不足时关机arpwatch&#xff0d;&#xff0d;用来维护以太网物理地址和ip地址的对应关系atd&#xff0d;&#xff0d;运行用户用at…