MVC整体运行流程一(进入管道)
1、在浏览器输入 https://www.cnblogs.com/zhangmm96/发送一个HTTP到web服务器,Web服务器WIndows内核中的HTTP.SYS组件捕捉当前请求,该组件分析出是一个需要交给IIS服务器处理的HTTP请求时,就会把Request请求交给IIS来处理,
2、如果该请求有缓存就会直接响应,

HTTP.SYS组件最重要的就是有一个缓存区,将近期处理请求缓存起来,提高响应速度,静态的文件会被缓存于内核模式下
3、IIS会分析Request氢气逇context-type类型,然后从处理程序映射表中去匹配,能匹配到请求的context-type类型时,会将请求交给映射表所对应的程序处理,为匹配到时(一般是请求的静态文件),就会去下载对应路径下的文件。如jpg,
4、对于 动态资源的处理,iis首先会通过一个工作进程去加载具体的处理组件DLL,IIS6.0,无法处理asp.net请求时,就会由W3WP.EXE所维护的工作进程来加载aspnet_isapi.dll
5、如果web应用程序是第一次加载,首先由aspnet_isapi.dll加载.net运行时(.net framework创建CLR运行时)IIS工作进程中油一个应用程序池,可以承载多个应用程序域AppDomain。
6、HTTP.SYS接收请求,通过应用程序域工厂AppDomainFactory创建应用程序域AppDomain。
7、一个IsapiRequest被加载,并创建一个IsapiWorkerRequest对象来封装当前HTTP请求,并IsapiWorkerRequst对象传递个Asp.net的HttpRuntime运行时,此时Http请求开始进入Asp.net请求管道,HttpRuntime是Asp.Net请求管道的入口,当请求进来时,先进入
HttpRuntime,由HttpRuntime决定如何处理程序
8、HttpRuntime维护这一个HtttpApplication池,当有Http请求过来就从池中取出可用的HttpApplication处理请求
9、HttpRuntime根据IsapiWorkerRequest对象创建HttpContext对象。
10、HttpApplicationFactory创建新的或者从HttpApplication池中获取现有的、可以用的HttpApplication对象
11、HttpApplication调用ProcessRequest方法,内部执行19个管道事件,参考另一篇:19个管道事件
MVC整体运行流程一(进入管道)的更多相关文章
- SpringMVC系列(十四)Spring MVC的运行流程
Spring MVC的运行流程图: 1.首先看能不能发送请求到Spring MVC的DispatcherServlet的url-pattern2.如果能发送请求,就看在Spring MVC中是否存在对 ...
- ASP.NET整体运行机制+asp.net请求管道+页面生命周期+MVC整体运行机制原理图
在网上找的,个人感觉很好的
- Spring MVC整体处理流程
一.spring整体结构 首先俯视一下spring mvc的整体结构 二.处理流程 1.请求处理的第一站就是DispatcherServlet.它是整个spring mvc的控制核心.与大多数的jav ...
- MVC – 9.mvc整体请求流程
1.请求管道 2~5微软自己的验证,我们一般不用. 在全局配置文件中-已经配置一个路由过滤器-为第7个事件注册了路由方法 1.在application_start中向静态路由表注册了路由数据,在管 ...
- MVC – 9.mvc整体请求流程
1.请求管道 2~5微软自己的验证,我们一般不用. 在全局配置文件中-已经配置一个路由过滤器-为第7个事件注册了路由方法 1.在application_start中向静态路由表注册了路由数据,在管道第 ...
- Spring MVC详细运行流程
- Spring MVC 的运行流程
1.用户发送请求到DispatcherServlet 2.DispatcherServlet调用处理器映射器(HanderMapping)找到处理器 3.处理器映射器(HanderMapping)返回 ...
- SSM三大框架的运行流程、原理、核心技术详解
一.Spring部分1.Spring的运行流程第一步:加载配置文件ApplicationContext ac = new ClassPathXmlApplicationContext("be ...
- 浅析MyBatis(一):由一个快速案例剖析MyBatis的整体架构与运行流程
MyBatis 是轻量级的 Java 持久层中间件,完全基于 JDBC 实现持久化的数据访问,支持以 xml 和注解的形式进行配置,能灵活.简单地进行 SQL 映射,也提供了比 JDBC 更丰富的结果 ...
随机推荐
- .Net微信网页开发之使用微信JS-SDK自定义微信分享内容
第一步.微信JS-SDK的使用步骤,配置信息的生成获取讲解: 关于JS-SDK的使用步骤和timestamp(时间戳),nonceStr(随机串),signature(签名),access_token ...
- 一文带你实现RPC框架
想要获取更多文章可以访问我的博客 - 代码无止境. 现在大部分的互联网公司都会采用微服务架构,但具体实现微服务架构的方式有所不同,主流上分为两种,一种是基于Http协议的远程调用,另外一种是基于RPC ...
- C#中Tuple的使用
鉴于MSDN上面的机器翻译实在太烂,还是自己翻译吧,虽然麻烦了点(-_-). 定义:元组是具有 特定数量和序列 的元素 的数据结构 (注意断句哈!) 元组通常有四种使用方式︰ 一.表示一组数据 例如 ...
- github项目readme.md文件如何编写
参考链接:http://blog.csdn.net/Bone_ACE/article/details/48318675
- bootstrap-treeview后台Json数据的封装及前台的显示
1.bootStrap-treeview是我们常用的树形结构,页面风格也比较清新,但是后台数据的封装比较麻烦,经过研究终于解决,和大家分享一下. 2.前端代码如下 <script> var ...
- 实现一个Golang的reverse函数
Reverse函数,用来反转列表,本例子用golang实现,反转一个slice列表. 因为slice是引用类型,因此直接修改参数的值即可. func myReverse(l []string) { f ...
- typescript 公共,私有与受保护的修饰符
public理解 当你在程序中没有指明修饰符时,默认为public,也就是在类内类外都可以访问,我们以下面的例子来解释. class Person{ name:string sex:string ag ...
- shiro创建配置对象
在执行 Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory(&quo ...
- 细说RESTFul API之版本管理
目录 接口实现版本管理的意义 如何实现接口的版本管理 项目实战 接口实现版本管理的意义 API版本管理的重要性不言而喻,对于API的设计者和使用者而言,版本管理都有着非常重要的意义. 首先,对于API ...
- win7 磁盘碎片整理
最近每天早上开机,都出现开机正常,但是所有软件都没法点开,性能特别差: 咨询了运维小伙伴,提示可以整理下电脑磁盘碎片试试.那么如何整理呢,如下详细说明 1.先整理C盘,打开我的电脑,在C盘上,右击-- ...