【ASP.NET Process Model 笔记 一】第一次深入理解 IIS 和 ASP.NET ISAPI 的处理过程

深入解析ASP.NET处理HTTP请求的内部流程
下面是个人的吐血总结,理解处理过程中重要的图:

 


 IIS 5.x的处理过程:

  1.   InetInfo.exe(即IIS 5所在的进程)接受请求。(在User Mode即用户模式下进行)
  2.   一些IIS能处理的文件,如静态文件则直接返回给浏览器,若不行则通过ISAPI Extension Mapping获知对应的ISPAIASP.NET ISAPI(当请求为.aspx文件时)
  3.   ASP.NET ISAPI创建进程aspnet_wp.exe(注:该进程跑着全部Application,通过AppDomain分离)
  4.  接着进入管道处理HttpRuntime->HttpWorkerRequest->HttpApplicationFactory。

 

 IIS 6的处理过程:  

 

  1.  组件Http.sys来侦听请求。(在Kernel Mode即用户模式下进行)
  2. 找到对应的Application Pool(每个Application会有一个App Pool,每个Pool跑在对应的w3wp.exe进程中),将请求加入到Application Pool Queue。
  3. Application Pool所在的进程初始化时就加载ASP.NET ISAPI,ASP.NET ISAPI进而加载CLR。
  4. 接着进入管道处理 HttpRuntime->HttpWorkerRequest->HttpApplicationFactory。(此步骤与IIS 5相同) 

 

 

IIS 5.x 与IIS 6的主要差异:

 

  •  iis 5是一个进程跑全部 Application;iis 6是每一个Appliction对应一个进程,每个进程是一个Application Pool。
  • IIS 5:InetInfo.exe(即IIS 5所在的进程)接受请求。(在User Mode即用户模式下进行) ;IIS 6:组件Http.sys来侦听请求。(在Kernel Mode即用户模式下进行 
  • aspnet_isapi.dll的作用点不用:iis 5中, InetInfo.exe找到对应的isapi即aspnet_isapi后,是aspnet_isapi创建Worker Process。iis 6中,worker process初始化的时候,aspnet_isapi被加载,然后aspnet_isapi加载CLR。也就是说,iis 5中aspnet_isapi创建了worker process,而iis 6是worker process初始化时,才加载的aspnet_isapi。所以最上面的图中,iis 5的aspnet_api.dll在worker process图外,iis 6的aspnet_api.dll在图内。

 


概括: 

 

  •  所谓http管道就是 HttpRuntime->HttpWorkerRequest->HttpApplicationFactory
  • 注:为了避免用户应用程序访问或者修改关键的操作系统数据, windows 提供了两种处理器访问模式:用户模式( User Mode )和内核模式( Kernel Mode )。一般地,用户程序运行在 User mode 下,而操作系统代码运行在 Kernel Mode 下。 Kernel Mode 的代码允许访问所有系统内存和所有 CPU 指令。关于 User Mode Kernel Mode 以及一些 Windows 底层的一些内容,推荐大家看看《 Microsoft Windows Internal Four Edition  Authored by Mark E.Russinovich & David A. Solomon

 

参考资料:

[原创]ASP.NET Process Model之二:ASP.NET Http Runtime Pipeline - Part II  

 

精简概括: 

ASP.Net处理HTTP请求的内部流程

 

 

转载于:https://www.cnblogs.com/skywithcloud/archive/2011/12/29/2303167.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值