网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

详解ASP.NET MVC Controller激活系统:总体设计

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/05
名思义,ControllerContext就是基于某个Controller对象的上下文。从如下的代码所示,ControllerContext是实际上是对一个Controller对象和RequestContext的封装,这两个对象分别对应着定义在ControllerContext中的同名属性,并且可以在构造函数中被初始化。而通过属性HttpContext和RouteData属性返回的HttpContextBase和RouteData对象在默认情况下实际上就是组成RequestContext的核心元素。ControllerContext的这四个属性都是可读可写的,我们对其进行任意地修改。当ControllerBase的Execute方法被执行的时候,它会根据传入的ReuqestContext创建ControllerContext对象,而后续的操作可以看成是在该上下文中进行。

当我们在进行开发的时候,通过VS默认创建的Controller类型实际上继承自抽象类Controller。该类型中定义了很多的辅助方法和属性以编程变得简单。如下面的代码片断所示,除了直接继承ControllerBase之外,Controller类型还显式实现了IController和IAsyncController接口,以及代表ASP.NET MVC 四大筛选器(AuthorizationFilter、ActionFilter、ResultFilter和ExceptionFilter)的4个接口。

  1. public abstract class Controller :   
  2.      ControllerBase,        
  3.      IController,   
  4.     IAsyncController,  
  5.      IActionFilter,   
  6.      IAuthorizationFilter,   
  7.      IExceptionFilter,   
  8.     IResultFilter,    
  9.      IDisposable,   
  10.    ...  
  11. {  
  12.    //省略成员  

二、 ControllerFactory

ASP.NET MVC为Controller的激活定义相应的相应的工厂,我们将其统称为ControllerFactory,所有的ControllerFactory实现了接口IControllerFactory接口。如下面的代码片断所示,Controller对象的激活最终最终通过IControllerFactory的CreateController方法来完成,该方法的两个参数分别表示当前请求上下文和从路由信息中获取的Controller的名称(最初来源于请求地址)。

  1. public interface IControllerFactory  
  2.  {  
  3.     IController CreateController(RequestContext requestContext, string controllerName);  
  4.     SessionStateBehavior GetControllerSessionBehavior(RequestContext requestContext, string controllerName);  
  5.     void ReleaseController(IController controller);  
  6.  }  
  7. public enum SessionStateBehavior  
  8.  
  9.      Default,  
  10.    Required,  
  11.    ReadOnly,  
  12.    Disabled  

处理负责创建Controller处理请求之前,ControllerFactory还需要在完成请求处理之后实施对Controller的释放回收,后者实现在ReleaseController方法中。IControllerFactory的另一个方法GetControllerSessionBehavior方法返回一个SessionStateBehavior枚举。熟悉ASP.NET的读者应该对SessionStateBehavior不会感到陌生,它用于表示请求处理过程中会话状态支持的模式,它的四个枚举值分别具有如下的含义:

  • Default:使用默认 ASP.NET 逻辑来确定请求的
  • 上一篇资讯: 详细解读ASP.NET的异步
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号