1..net mvc的原理概述
请求过来,根据ip和端口,由iis服务器进行接收,如果是静态文件则直接返回文件内容,如果无法解析,则根据映射规则找到对应请求后缀
的ASPNET_ISAPI.dll处理程序集,交由其进行处理。
1.此时会生成IsapRuntime,其创建了WorkRequest对象,
2.接下来实例化HttpRunTime,由其生成HttpContext上下文对象,此时就初始化了Request,Response,Session,Application,等内置对象,
3.然后创建了HttpApplicationFactory工厂对象,其在第一次访问时调用了Global文件中的Application_Start方法,
生成HttpApplication对象,读取系统的配置文件,其中就包括我们的路由配置和约束,并创建HttpModel对象,调用Init方法,并注册这些方法到管道中,
4.由HttpApplication对象调用ProcessRequest,里面负责执行了管道时间
4.1 第一个是事件 就是BeginRequest方法,然后重点来到第7个时间,创建MVCHandler对象 ,
4.1.1将HttpContext存入其中,并读取路由表中的路由规则生成RouteData对象,和HttpContext一并存入从而创建RequestContext,再RequestContext对象传入RoudlerHandler.GetHttpHandler从而获取MVCHandler,并调用context.RemapHandler将mvchandler存入httpcontext中
4.2第8个事件则检查HttpContext中RemapHandler是否为空,如果不为空则跳过此事件,这也是和aspx最重要的不同之一,在aspx中这里是要打造页面控件树的. 而.net mvc这里是略过的
4.3来到第11至第12个事件之间会根据控制器名获取控制器工厂来创建对应的控制器对象,传入RequestContext调用控制器父类的ControllerBase的Execute方法,里面就将RequestContext设置给ControllerContext,执行ExecuteCore方法, 其中就根据请求的方法名找到并调用对应的Action方法,也就是我们写的业务,最后返回View,调用的是ActionResult.Execute 方法,,也就是父类的ViewResultBase.ExecuteResult,找到对应的视图引擎, 获取ViewEngineResult的View对象,获取Response的TextWriter对象和ViewContext对象 来调用引擎的Render方法,生成html代码并writer出去.
1..net mvc的原理概述的更多相关文章
- linux软中断与硬中断实现原理概述
linux软中断与硬中断实现原理概述. 1.软中断通过open_softirq注册一个软中断处理函数,即在软中断向量表softirq_vec数组中添加新的软中断处理action函数. 2.调用rais ...
- Spring MVC执行原理
spring的MVC执行原理 1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求 进行真正的处理工作. 2.DispatcherSer ...
- spring的MVC执行原理
spring的MVC执行原理 1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求 进行真正的处理工作. 2.DispatcherSer ...
- (4.1)Spring MVC执行原理和基于Java的配置过程
一.Spring MVC执行原理和基于Java配置的配置过程 (一)Spring MVC执行过程,大致为7步. 所有的请求都会经过Spring的一个单例的DispacherServlet. Dispa ...
- Spring MVC简单原理
Spring MVC原理 针对有Java Web基础.Spring基础和Spring MVC使用经验者. 前言 目前基于Java的web后端,Spring生态应该是比较常见了.虽然现在流行前后端分离, ...
- spring Mvc 执行原理 及 xml注解配置说明 (六)
Spring MVC 执行原理 在 Spring Mvc 访问过程里,每个请求都首先经过 许多的过滤器,经 DispatcherServlet 处理; 一个Spring MVC工程里,可以配置多个的 ...
- MVC底层原理
窥探ASP.Net MVC底层原理 实现跨越Session的分布式TempData 1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时 ...
- Spring MVC执行原理和基于Java的配置过程
一.Spring MVC执行原理和基于Java配置的配置过程 (一)Spring MVC执行过程,大致为7步. 所有的请求都会经过Spring的一个单例的DispacherServlet. Dispa ...
- ASP.NET MVC底层原理与框架
前言 鄙人有一毛病,喜欢钻研原理性的东西,感觉只知道怎么用还不太够,更想知道如何实现的以及为什么会这样. 暑假的时候做积分系统是第一次接触MVC,感觉MVC就是一个框架,分为Module ,view和 ...
随机推荐
- css 实现关闭按钮 X
.close::before { content: "\2716";} 然后就显示出来了 这里有个更直接的例子 <!DOCTYPE html> <html lan ...
- [Swift实际操作]八、实用进阶-(2)Swift语言中的三种消息传递模式
本文将通过响应按钮的点击事件,来演示Target-Action消息传递机制,该机制主要用于响应用户的界面操作.打开创建的空白项目.然后在左侧的项目导航区,打开视图控制器的代码文件:ViewContro ...
- FlowPortal-BPM——移动手机端配置与IIS发布
一.移动手机端配置 (1)VS打开文件夹iAnyWhere,配置config文件 (2)BPM-Web文件config中设置(设置为外网网址) 二.BPM设置 勾选移动审批可以设置要展示的字段信息,修 ...
- django文章收藏
http://www.cnblogs.com/suoning/p/5818869.html
- Scala代码开发 metaTable(元表)
使用Scala语言开发时,自动生成get和set方法 不用写return进行返回, 因为它的最后一行就是返回值 先建立四个层(层层递进) domain 表结构的建立 repository(DAO) 实 ...
- ES6之新增const命令使用方法
hi,我又回来了,今天学习一下const命令. 声明一个常量 const声明一个只读常量,一旦声明,常量的值便不可改变. 例子如下: const food = 12; food = 23; // Un ...
- 浅谈postMessage跨域通信与localStorage实现跨域共享
https://www.cnblogs.com/tyrion1990/p/8134384.html
- 解决flex布局下, elementui table组件不能跟随父组件的宽度而变化的bug
bug: 我在flex布局的元素中使用了elementui的table组件,饿了么的table上会被加一个动态的宽度, 当第一次改变flex元素宽度的时候.table的动态宽度会变化,第二次和以后就不 ...
- 虚拟机下设置CentOS 7使用固定IP地址
1.设置虚拟机使用桥接网络 2.查看安装虚拟机软件的电脑IP信息 3.启动CentOS 7进行设置
- kubernetes 与LVM的结合
本文主要介绍k8s与LVM结合使用的场景,在原生的k8s中对于本地存储提供了hostPath与emptyDir两种volme,hostPath是直接将文件存储在本地主机上,存在的问题是无法进行quot ...