• Asp.net MVC流程简述


    先上个图
    步骤一
    IIS
     
    当请求到达我们的服务器时,在asp.net取得控制之前,windows操作系统的核心组件 HTTP.SYS一直在监听请求端口, 
    接下来asp.net会通知所有注册的httpModule。 有一个httpModule是默认注册了的。那就是UrlRoutingModule,也就进入了路由模块.核心路由接管控制
    IIS上有两种管道模式
    ISAPI模式(就是常说的经典模式)
    ISAPI模式通常和webform联系的比较多,因为他更多的是处理带 后缀扩展名 如  .aspx  .ashx等 的请求(当然也有其他方法来处理不带扩展名的请求 wildmap)
     
    集成模式
    集成模式只在iis7支持。主要处理不带扩展名的请求
     
    步骤二
     
    CoreRouting 
     
    当核心路由系统接管控制之后,会把请求封装成 RequestContext这样一个数据结构。这个数据结构中包含了几乎所有的请求信息,以便后面的组件可以任意的去使用它。mvc框架就是使用requestContext中的信息,将控制权转移给对应的controller对象,并提出其中的action参数。
     
    比如说我们的请求为 //Home/SayHi 那么封装成RequestContext对象传递给MVC之后 就提取出 控制器名称 HomeController 以及要调用这个控制器中的SayHi()方法 。(接下来的步骤就是要能创建这个我们自定义的控制器对象了)
     
    步骤三 
     
    controllers 和actions
     
    从上面的流程图可以知道, mvcRouteHandler从核心路由模块过渡到mvc框架之后,就要生产对应的controller对象类处理了。
    这些对象 你可以采用 不标准的方法通过直接实现Icontroller接口来创建 ,也可以通过controllerFactory来实现。当然这个控制器工厂可以是你自定义的实现了IcontrollerFactory接口的自定义工厂(或者是默认工厂的子类),也可以是mvc框架自带的DefaultControllerFactory来创建。
    很显然默认会采用后者。(前者创建自定义工厂肯定也会有用处,因为它可以直接改变控制器的模子,如果你想造出一批特殊功能的控制器,就会相当有用了)
     
    步骤四
     
    controllers内部的这些action并不是直接自己invoke的 而是通过一个IActionInvoker来触发执行,然后返回actionResult给ViewEngine去解析。同理,这个IActionInvoker我们也可以自行实现。
  • 相关阅读:
    node.js开发 打包管理工具webpack
    node.js开发 npm包管理工具 npm 和 cnpm区别
    node.js开发 npm包管理工具
    node.js开发 1-概述
    脚手架-1概念
    前端开发 vue,angular,react框架对比2
    AttachDispatch
    画图软件orign的使用
    建立xml文件时遇到的编码问题和解决方法
    securecrt简介
  • 原文地址:https://www.cnblogs.com/JasonShenW/p/4369328.html
Copyright © 2020-2023  润新知