各版本IIS下ASP.net请求处理过程分析第1/3页

绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices –这些都在ASP.NET层次结构在最高层。

这篇文章的资料收集整理自各种微软公开的文档,通过比较 iis5、IIS6、IIS7 这三代 IIS 对请求的处理过程, 让我们熟悉 ASP.NET的底层机制 并对请求(request)是怎么从Web服务器传送到ASP.NET运行时有所了解。通过对底层机制的了解,可以让我们对 ASP.net 有更深的理解。

IIS 5 的 ASP.net 请求处理过程

对图的解释:

IIS 5.x 一个显著的特征就是 Web Server 和真正的 ASP.NET Application 的分离。作为 Web Server 的IIS运行在一个名为 InetInfo.exe 的进程上,InetInfo.exe 是一个Native Executive,并不是一个托管的程序,而我们真正的 ASP.NET Application 则是运行在一个叫做 aspnet_wp 的 Worker Process 上面,在该进程初始化的时候会加载CLR,所以这是一个托管的环境。

ISAPI:  指能够处理各种后缀名的应用程序。 ISAPI 是下面单词的简写 :Internet Server Application Programe Interface,互联网服务器应用程序接口。

IIS 5 模式的特点:

  1. 首先,同一台主机上在同一时间只能运行一个 aspnet_wp 进程,每个基于虚拟目录的 ASP.NET Application 对应一个 Application Domain ,也就是说每个 Application 都运行在同一个 Worker Process 中,Application之间的隔离是基于 Application Domain 的,而不是基于Process的。
  2. 其次,ASP.NET  ISAPI 不但负责创建 aspnet_wp Worker Process,而且负责监控该进程,如果检测到 aspnet_wp 的 Performance 降低到某个设定的下限,ASP.NET  ISAPI 会负责结束掉该进程。当 aspnet_wp 结束掉之后,后续的 Request 会导致ASP.NET ISAPI 重新创建新的 aspnet_wp Worker Process。
  3. 最后,由于 IIS 和 Application 运行在他们各自的进程中,他们之间的通信必须采用特定的通信机制。本质上 IIS 所在的 InetInfo 进程和 Worker Process 之间的通信是同一台机器不同进程的通信(local interprocess communications),处于Performance的考虑,他们之间采用基于Named pipe的通信机制。ASP.NET ISAPI和Worker Process之间的通信通过他们之间的一组Pipe实现。同样处于Performance的原因,ASP.NET ISAPI 通过异步的方式将Request 传到Worker Process 并获得 Response,但是 Worker Process 则是通过同步的方式向 ASP.NET ISAPI 获得一些基于 Server 的变量。

IIS6 的 ASP.net 请求处理过程

对图的解释:

IIS 5.x 是通过 InetInfo.exe 监听 Request 并把Request分发到Work Process。换句话说,在IIS 5.x中对Request的监听和分发是在User Mode中进行,在IIS 6中,这种工作被移植到kernel Mode中进行,所有的这一切都是通过一个新的组件:http.sys 来负责。

注:为了避免用户应用程序访问或者修改关键的操作系统数据,windows提供了两种处理器访问模式:用户模式(User Mode)和内核模式(Kernel Mode)。一般地,用户程序运行在User mode下,而操作系统代码运行在Kernel Mode下。Kernel Mode的代码允许访问所有系统内存和所有CPU指令。

在User Mode下,http.sys接收到一个基于 aspx 的http request,然后它会根据IIS中的 Metabase 查看该基于该 Request 的 Application 属于哪个Application Pool, 如果该Application Pool不存在,则创建之。否则直接将 request 发到对应Application Pool 的 Queue中。

每个 Application Pool 对应着一个Worker Process:w3wp.exe,毫无疑问他是运行在User Mode下的。在IIS Metabase 中维护着 Application Pool 和worker process的Mapping。WAS(Web Administrative service)根据这样一个mapping,将存在于某个Application Pool Queue的request 传递到对应的worker process(如果没有,就创建这样一个进程)。在 worker process 初始化的时候,加载ASP.NET ISAPI,ASP.NET ISAPI 进而加载CLR。最后的流程就和IIS 5.x一样了:通过AppManagerAppDomainFactory 的 Create方法为 Application 创建一个Application Domain;通过 ISAPIRuntime 的 ProcessRequest处理Request,进而将流程进入到ASP.NET Http Runtime Pipeline。

当前1/3页 
123下一页

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/9444.html

(0)
晴川运维晴川运维
上一篇 4天前
下一篇 4天前

相关推荐

  • IIS6 安装与配置.net 2.0过程的详细图解

      第一步,打开控制面板,双击【添加或删除程序】图标,在弹出的【添加或删除程序】窗口中选择【 添加/删除Windows组件(A)】,然后会弹出Windows组件…

    IIS 2025年6月8日
  • 从外网访问内网本机的网站实现方法分享

    这是一个比较古老的话题了。一般懂得搭建网站的朋友,应该都会有分享自己小站的冲动。一来可以展示自己的作品,二来也可以方便别人看看网站,提提意见。呵呵。 鉴于网上类似的详细教程真的很少…

    IIS 2025年6月9日
  • win2003+IIS下安装Xcache加速的配置方法分享

    在论坛后台看了半天,只有内存优化一个还没有做,但是自己以前又没有弄过,只有学了。 论坛支持Memcache、eAccelerator、Alternative PHP Cache(A…

    IIS 6天前
  • 提示iis 无法启动World Wide Web Publishing服务的解决办法

    启动FTP Publishing服务也出现同样的提示。晕倒,然后打开其属性看看服务依存关系,可是其所依存的服务我已全部开启,还是不行,然后百度谷歌一顿搜,结果搜了半天,按那些解决方…

    IIS 2025年6月12日
  • iis中ASP运行环境配置图解 IIS的安装和基本设置

    如果为了方便与简单的测试可以用简易的asp运行环境,可以到http://www.jb51.net/softs/28133.html下载,一般的网站是没问题的,如果比较复杂的就需要用…

    IIS 2025年6月8日
  • 没有ISAPI Rewrite FULL照样玩多站点伪静态

    IIS中增加URL Rewrite功能,最多人选用的是名为“ISAPI Rewrite“的软件,网上下载的破解版,其实破解不完善,最终会不能用。 再次查找,找到了Ionic&#82…

    IIS 2025年6月8日
  • windows服务器的安全配置技巧总结

    昨天的服务器被黑的事件中,我自己也是有一些责任,因为平时懒得对服务器安全进行设置,有些设置其实几分钟就可以设置完成,可就是懒惰,结果万一服务器被恶意破坏,就需要花费更多的时间恢复数…

    IIS 2025年6月8日
  • windows防火墙支持FTP服务的设置方法

    这种问题站长们经常遇到,偶把真正的解决方案贴出来给大家看下! 问题:2003 server用于提供web和ftp服务,通过互联网用flashfxp实现远程上传网页。如果关闭防火墙,…

    IIS 2025年6月8日
  • IIS 7.0安装配置方法图文教程(win7)

    今天小编为大家带来一篇Win7系统下IIS7的详细安装配置图文教程,需要的朋友可以看看! Win7系统下IIS7安装方法: 1.通过用户界面安装 1.单击“开始”/“控制面板”/“…

    IIS 2025年6月8日
  • Win2003灵活实现多Web站点的设置方法[图文]

    一、建立虚拟主机   那么一个服务器上有两个网站,用户如何访问这两个网站呢?可以有三种方法。   1>两个网站使用不同的IP地址。这样用户在访问第一个网站需在浏览器中输入ht…

    IIS 2025年6月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注