声明:本文只是自己的总结和积累。IIS7.x

目录

  • IIS流程及组成部分
  • ASP.NET流程及组成部分
  • IIS与ASP.NET  MVC

一、IIS流程及组成部分 

  

 1、Http.SYS:负责监听HTTP请求(它不属于IIS范畴,但是和IIS联系紧密)

  Http.SYS和IIS是相互独立的,但是之间又是密不可分的。Http.SYS是一个运行在内核模式下的一个网络驱动,它归属于TCP/IP网络子系统的一部分,且是运行在TCP/IP之上。它负责着来自网络HTTP请求的监听和过滤。静态地址请求会直接返回到客户端,动态请求会进入下个流程。

  高效:它作为网络驱动持续运行,持续监听过滤请求,对请求做出快速的响应。对于请求频繁的资源,会将返回内容缓存在内核模式下,后续的请求会从缓存中返回内容,这样就避免了用户模式和内核模式的频繁切换。

   稳定:它独立于IIS运行在内核模式下的网络驱动程序,不需要执行用户程序,也不会受到Web进程和IIS进程的影响。

 2、SvcHost.exe :接收Http请求、配置管理、工作进程管理

  W3SVC(3W公共服务—World Wide Web Publishing Service): 接收Http请求

  WAS(Windows进程激活服务—Windows Process Activation Service):配置管理、工作进程管理

其中,WAS就可以接收处理HTTP请求和非HTTP请求。WAS包含一组非HTTP请求监听器适配接口,可以接收监听器监听的非HTTP请求。其实W3SVC充当了HTTP请求监听器适配器。

  WAS通过请求后缀名与Web应用映射关系,创建工作者进程(或者将请求分发给对应建好的工作者进程),在工作者进程中加载ISAPI(互联网服务器应用程序接口—Internet Server Application Programe Interface)

  ISAPI应用程序实质是一个接口,一个IIS与.NET的桥梁入口,ISAPI维护着很多的桥梁(.dll),例如加载ASP.NET应用的Aspnet_ispai.dll。

  

   在穿过桥梁Aspnet_ispai.dll之后,随之进入ASP.NET的地界了,随后的CLR的加载,AppDomain创建、Web Application的初始化等等。

二、ASP.NET流程及组成部分

  进入到ASP.NET应用,加载CLR,创建AppDomain, HttpApplication的初始化。接下来穿过一串Module,这些Module里可能实现了当请求进入程序之前的时候出发一些操作或者当请求完成时出发的一些操作,期间会经过Handler,来真正相应我们所写的后台代码。请求—>Module(请求进入前触发的操作)—> Handler(我们的aspx页面的后台代码继承自Page,Page继承IHttpHandler)—>Module(请求结束后触发的操作)

三、IIS与ASP.NET  MVC

  

  客户端请求 —> 监听器监听 —> HTTP请求接收(W3SVC)或者 WAS接收到非HTTP请求 —> 对应映射关系并创建工作者进程—> 加载ISAPI—>        

  加载相应的 XXX_ispai.dll —>进入ASP.NET应用—> 加载CLR —> 初始化我们的应用程序  —>一系列 Module操作—>对应Handler的加载执行

   ASP.NET中的Module和Handler拥有很高的扩展性。MVC的就是扩展了Module和Handler。在请求进入前,触发Moudle,对请求进行拦截,分析其controller和action,以及其它相关的上下文信息,然后调用扩展了IHttPHandler接口的MvcHandler,进而进入到我们所对应的具体后台代码。

  

  

MVC — 初步理解IIS工作流程的更多相关文章

  1. Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute

    上篇文章中分析了Custom Binder的弊端: 由于Custom Binder是和具体的类型相关,比如指定类型A由我们的Custom Binder解析,那么导致系统运行中的所有Action的访问参 ...

  2. Asp.net MVC的Model Binder工作流程以及扩展方法(1)

    Asp.net MVC的Model Binder工作流程以及扩展方法(1)2014-03-19 08:02 by JustRun, 523 阅读, 4 评论, 收藏, 编辑 在Asp.net MVC中 ...

  3. Asp.net MVC的Model Binder工作流程以及扩展方法(1) - Custom Model Binder

    在Asp.net MVC中, Model Binder是生命周期中的一个非常重要的部分.搞清楚Model Binder的流程,能够帮助理解Model Binder的背后发生了什么.同时该系列文章会列举 ...

  4. Asp.net MVC的Model Binder工作流程以及扩展方法(3) - DefaultModelBinder

    Default Binder是MVC中的清道夫,把守着Model Binder中的最后一道防线.如果我们没有使用Custom Model Binder等特殊处理,那么Model的绑定都是有Defaul ...

  5. ajax的理解与工作流程

    一.什么是ajax ajax是一种异步通信技术.在ajax出现之前,客户端与服务端之间直接通信.引入ajax之后,客户端与服务端加了一个第三者--ajax.有了ajax之后,通过在后台与服务器进行少量 ...

  6. GPU大百科全书索引(有助于理解openGL工作流程)

    GPU大百科全书索引 0.GPU大百科全书 前传 看图形与装修的关系 1.GPU大百科全书 第一章:美女 方程与几何 2.GPU大百科全书 第二章 凝固生命的光栅化 3.GPU大百科全书 第三章:像素 ...

  7. 深入理解IIS的多线程工作机制

    首先让我们来看看IIS里面的这2个数字:最大并发连接数,队列长度.先说这2个数字在哪里看. 最大并发连接数:在IIS中选中一个网站,右键网站名称,在右键菜单中找到并点击[管理网站]->[高级设置 ...

  8. MVC+EF 理解和实现仓储模式和工作单元模式

    MVC+EF 理解和实现仓储模式和工作单元模式 原文:Understanding Repository and Unit of Work Pattern and Implementing Generi ...

  9. Asp.net MVC学习--默认程序结构、工作流程

    二.MVC 默认程序结构 MVC新建好之后,会对应的出现几个包,分别是:Controller.Model.View --即MVC 其中的默认的Default.aspx文件可以方便url重写,如果不设置 ...

随机推荐

  1. SQLiteDatabase和Contentprovider

    SQLiteDatabase和Contentprovider这两个数据库,我一般是用前面一个,喜欢它的操作数据库的语句,简单明了,可惜有时遇到数据库同步的问题,有时我们需要在一个数据库下建立多个表,多 ...

  2. UVA 707 - Robbery(内存搜索)

    UVA 707 - Robbery 题目链接 题意:在一个w * h的图上.t个时刻,然后知道一些信息,每一个时刻没有小偷的矩阵位置,问哪些时刻能够唯一确定小偷位置.和确定小偷是否已经逃走,假设没逃走 ...

  3. 【PhotoShop】采用PS让美丽的咖啡泡沫

    稀土一杯咖啡,如何你不能击败张(常苦黑咖啡饮料实在受不了! ) 得到例如以下图 看着还不错,但是总感觉空空荡荡的,所以就拿来PS练手了.终于效果图例如以下: 以下讲下制作过程: 首先是给照片加下咖啡泡 ...

  4. zoj3822 期望dp

    每天在一个n*m的棋盘上放棋子,问使得每一行,每一列都有棋子的期望天数 dp[n][m][k] 表示用k个棋子占据了n行,m列,距离目标状态还需要的期望天数 那么dp[n][m][k] = p1 * ...

  5. 详细分析Java中断机制(转)

    1. 引言 当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务.Java没有提供一种安全直接的方法 ...

  6. windows下cocos2dx3.0开发环境及Android编译环境搭建

    cocos2dx更新到了3.x版本号,自己一直没有换,如今开发组要求统一换版本号,我就把搭建好开发环境的过程记录下来. 一.Windowns下开发环境搭建 1.  所需工具         1)coc ...

  7. log4j 实例 , 浅析

    一.新建log4j.propperties,放在工程的src目录下. #fileAppender log4j.rootCategory = DEBUG,file,consoleAppender log ...

  8. Quartz.NET学习系列

    Quartz.NET它是一个开源的任务调度引擎,对于周期性任务,持久性任务提供了很好的支持,并且支持持久性.集群等功能. 这是什么对我来说Quartz.NET学习记录: 源代码下载http://yun ...

  9. sql server 远程

    资讯 |  安全 |  论坛 |  下载 |  读书 |  程序开发 |  数据库 |  系统 |  网络 |  电子书 |  站长学院 |  源码 |  QQ |  专栏 |  考试 |  手册 | ...

  10. ORA-00600 [kollasg:client-side tmp lob]

    今天在查看一个库的日志时,发现被ORA-00600 [kollasg:client-side tmp lob] 错误刷屏了. 发生该错误的原因是由于应用那边lob的问题.lob没有被初始化,建议使用E ...