iis6.0与asp.net的运行原理

  这几天上网翻阅了不少前辈们的关于iis和asp.net运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教。

  这篇博客主要是描述asp.net程序在iis6.0上的一个执行过程。

  执行过程图:

组件描述

  HTTP.SYS:

    Win2003和winXP SP2的核心操作系统组件,,能够让任何应用程序通过它提供的接口,以http协议进行信息通讯。

  优点:

  1. 缓存-静态的内容被缓存于内核模式下,这使服务响应速度更快
  2. 记录(Log)-IIS的LOG功能更快且标准化
  3. 带宽控制
  4. 可靠性-所有的服务请求会在Http.sys里暂存入队列,而不是由服务程序本身来处理,这样,即使服务程序重启,尚未被处理的请求也不会丢失了
  5. 端口重用- 现在,只要是通过Http.sys管理的端口(基本包括了那些著名的端口,比如80),都可以同时允许多个程序同时监听了。

  简单来说它是独立于IIS之外的,任何http请求都会首先被它侦听到

  W3SVC:

1. 没有第三方应用程序的代码

2. 根据配置数据的设置创建和监视w3wp.exe,由工作线程运行Web网站应用。

3. 总是处于运行状态,因此它能够监视Web应用的健康状况,并在必要时采取行动。由于这一策略,服务器能够根据用户指定的参数监视和重新启动应用程序。

  Application Pool(应用程序池):

1. 在IIS6.0中,每一个用户web应用程序都会运行在一个应用程序池中。这个应用程序池可以是IIS默认的应用程序池,也可以是用户自定义的应用程序池。

2.作为一个宿主程序,每个应用程序池中都会运行着一个或者多个用户web应用程序。

3.在应用程序池中,存在着一个或者多个工作进程(一个以上叫Web园)。每个工作进程只能属于一个特定的应用程序池,由这些工作进程来负责管理应用程序池中的用户web应用程序。

  w3wp.exe(工作进程):

  默认情况下,IIS 6.0在工作进程隔离模式下运行,在这种模式中,对于每一个Web应用,IIS 6.0都用一个独立的w3wp.exe的实例来运行它。 因此,工作进程隔离模式不存在          进程内(In-Process)应用程序存在的问题,有效地提高了可靠性和安全性。可靠性的提高是因为一个Web应用的故障不会影响到其他Web应用,也不会影响http.sys,每一        个Web应用由W3SVC单独地监视其健康状况。安全性的提高是由于应用程序不再象IIS 5.0和IIS4.0的进程内应用那样用System帐户运行,默认情况下,w3wp.exe的所有        实例都在一个权限有限的“网络服务”帐户下运行,必要时,还可以将工作进程配置成用其他用户帐户运行。

  Metabase(元数据):

  1. 保存配置数据
  2. 有一个map保存应用程序池和工作进程的数据  

执行过程

  1. 在客户端(一般指浏览器)输入一个http://www.***.com/default.aspx/
  2. HTTP.SYS首先侦听到请求(静态文件缓存于内核模式下)
  3. W3SVC接收请求,判断是否是静态文件,静态文件直接响应,否则将请求转发给应用程序池的请求队列,从元数据(通过WAS)中查找应用程序池数据,没有则创建
  4. WAS请求传递给应用程序池对应的工作进程,没有就创建(创建时加载ISAPI)
  5. ISAPI会根据ECH创建一个HttpWorkerRequest
  6. 接下来进入应用程序域,由非托管代码变为托管代码(CLR)
  7. HttpRuntime执行ProcessRequest方法产生HttpContext
  8. HttpApplicationFactory执行GetApplicationInstance方法产生HttpApplication
  9. HttpApplication执行一系列事件

Application暴露出的事件

  1.BeginRequest:asp.net开始处理请求的第一个事件,表示处理的开始。

2.AuthenticateRequest:验证请求,一般用来取得请求的用户信息。

3.PostAuthenticateRequest:已经获取请求的用户信息。

4.AuthorizeRequest:授权,一般用来检查用户的请求是否获得权限。

5.PostAuthorizeRequest:用户请求已经获得授权。

6.ResolveRequestCache:获取以前处理缓存的处理结果,如果以前缓存过,那么,不用再进行请求的处理工作,直接返回缓存的结果。

7.PostResolveRequestCache:已经完成缓存的处理工作。

8.PostMapRequestHandler:已经根据用户的请求,创建了请求的处理器对象。

9.AcquireRequestState:取得请求的状态,一般用于session

10.PostAcquireRequestState:已经获得了session

11.PreRequestHandlerExecute:准备执行处理程序。

12.PostRequestHandlerExecute:已经执行了处理程序

13.ReleaseRequestState:释放请求的状态。

14.PostReleaseRequestState:已经释放了请求的状态。

15.UpdateRequestCache:更新缓存。

16.PostUpdateRequestCache:已经更新了缓存。

17.LogRequest:请求的日志操作

18.PostLogRequest:已经完成请求的日志操作。

19.EndRequest:本次请求处理完成。

HTTP.SYS

时间: 2024-11-05 13:42:48

iis6.0与asp.net的运行原理的相关文章

WIN2003 IIS6.0+PHP+ASP+MYSQL优化配置

因为WINDOWS 2003 的 IIS 6.0 默认是没有安装开启对ASP的支持 这要我们手动去配置 这一步很简单 一 首先在控制面板里运行"添加删除程序" 选择安装IIS 6.0 安装后IIS 6.0就默认开启了对ASP的支持 如果发现未允许运行ASP 可按 A B C 步骤去开启A:在开始菜单-->程序-->"管理工具"里打开 IIS 6.0 选择 "WEB 服务扩展"B:点选 Active Server Pages 组件 和

ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行

ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行 核心框架 ASP.NET Core APP 创建与运行 总结 之前两篇文章简析.NET Core 以及与 .NET Framework的关系和.NET Core的构成体系从总体上介绍.NET Core,接下来计划用一个系列对ASP.NET Core的运行原理进行剖析. ASP.NET Core 是新一代的 ASP.NET,早期称为 ASP.NET vNext,并且在推出初期命名为ASP.NET 5,但随着 .NET Core

ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.ConfigureServices 3.Configure方法

ASP.NET的运行原理与运行机制

http://kb.cnblogs.com/page/75702/ 当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的页面类型为其加载相应的.dll文件,然后在处理过程中将这条请求发送给能够处理这个请求的模块.在ASP.NET 3.5中,这个模块叫做HttpHandler(HTTP处理程序组件),之所以.aspx文件可以被服务器处理,就是因为在服务器端有默认的HttpHandler专门处理.aspx文件.IIS在将这条请求发送给能够处理这个请求的模块之前,还需要经过一些H

ASP.NET的运行原理与运行机制 -转

转自:原文  http://www.cnblogs.com/sntetwt/archive/2011/03/11/1980500.html 当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的页面类型为其加载相应的.dll文件,然后在处理过程中将这条请求发送给能够处理这个请求的模块.在ASP.NET 3.5中,这个模块叫做HttpHandler(HTTP处理程序组件),之所以.aspx文件可以被服务器处理,就是因为在服务器端有默认的HttpHandler专门处理.aspx文

【ASP.NET Core】运行原理(1):创建WebHost

本系列将分析ASP.NET Core运行原理 [ASP.NET Core]运行原理[1]:创建WebHost [ASP.NET Core]运行原理[2]:启动WebHost [ASP.NET Core]运行原理[3]:认证 本节将分析WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().Build();代码. 源代码参考.NET Core 2.0.0 WebHostBuilder WebHost Kestrel 问题概要 Hostin

Asp.net WebPages框架运行原理浅析(转)

在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和符合Web标准,编写方式更接近于PHP和以前的Asp,和使用WebForms这种模仿Windows Form编程方式有了很大不同,不再有大量控件和控件生成的大量不够灵活的代码,但是同样可以使用Asp.net提供的大量类库和功能,可以说WebPages框架融合了Asp.PHP和Asp.net的全部优点,又可使用C#和VB编程语言.一看到WebPages框架,我就马上有了深

Asp.net WebPages框架运行原理浅析

[来源] 达内    [编辑] 达内   [时间]2012-09-14 在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和符合Web标准 在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和符合Web标准,编写方式更接近于PHP和以前的Asp,和使用WebForms这种模仿Windows Form编程方式有了很大不同,不再有大量控件和控件生成的

ASP.NET运行原理

1,ASP.NET运行原理: 客户端向服务器发出请求 → 服务器处理请求→ 处理好的数据以报文发给浏览器 → 浏览器显示请求结果 2,Chrome浏览器,查看请求过程:F12打开浏览器的调试窗口: 3,添加一般处理程序,查看 请求→处理→响应 的过程 // ProcessRequest中,对请求做出处理后返回数据 public void ProcessRequest(HttpContext context) { //context.Response.ContentType = "text/pla