欢迎来到天天文库
浏览记录
ID:22681993
大小:461.00 KB
页数:14页
时间:2018-10-30
《iis内部运行机制》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、IIS内部运行机制作者:※森林小居※ 来源:博客园 发布时间:2012-07-2516:34 阅读:5900次 推荐:30 原文链接 [收藏] 能够处理各种后缀名的应用程序,通常被称为ISAPI应用程序(NOTE:InternetServerApplicationProgrameInterface,互联网服务器应用程序接口)。虽然这ISAPI听上去还挺气派,也算是“应用程序”呢,但仔细看看它的全称就明白了:它实际上只是一个接口,起到一个代理的作用,它的主要工作是映射所请求的页面(文件) 和与此后缀名相对应的实际的处理程序。 ASP.NET是一个非
2、常强大的构建Web应用的平台,它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用。 绝大多数的人只熟悉高层的框架如:WebForms和WebServices—这些都在ASP.NET层次结构的最高层。 这篇文章的资料收集整理自各种微软公开的文档,通过比较IIS5、IIS6、IIS7这三代IIS对请求的处理过程,让我们熟悉ASP.NET的底层机制并对请求(request)是怎么从Web服务器传送到ASP.NET运行时有所了解。通过对底层机制的了解,可以让我们对ASP.net有更深的理解。 IIS5的ASP.net请求处理过程 对图的解释:
3、 IIS5.x一个显著的特征就是WebServer和真正的ASP.NETApplication的分离。作为WebServer的IIS运行在一个名为InetInfo.exe的进程上,InetInfo.exe是一个NativeExecutive,并不是一个托管的程序,而我们真正的ASP.NETApplication则是运行在一个叫做aspnet_wp的WorkerProcess上面,在该进程初始化的时候会加载CLR,所以这是一个托管的环境。 ISAPI:指能够处理各种后缀名的应用程序。ISAPI是下面单词的简写:InternetServerApplicati
4、onProgrameInterface,互联网服务器应用程序接口。 IIS5模式的特点: 1、首先,同一台主机上在同一时间只能运行一个aspnet_wp进程,每个基于虚拟目录的ASP.NETApplication对应一个ApplicationDomain,也就是说每个Application都运行在同一个WorkerProcess中,Application之间的隔离是基于ApplicationDomain的,而不是基于Process的。 2、其次,ASP.NET ISAPI不但负责创建aspnet_wpWorkerProcess,而且负责监控该进程,如果
5、检测到aspnet_wp的Performance降低到某个设定的下限,ASP.NET ISAPI会负责结束掉该进程。当aspnet_wp结束掉之后,后续的Request会导致ASP.NETISAPI重新创建新的aspnet_wpWorkerProcess。 3、最后,由于IIS和Application运行在他们各自的进程中,他们之间的通信必须采用特定的通信机制。本质上IIS所在的InetInfo进程和WorkerProcess之间的通信是同一台机器不同进程的通信(localinterprocesscommunications),处于Performance的
6、考虑,他们之间采用基于Namedpipe的通信机制。ASP.NETISAPI和WorkerProcess之间的通信通过他们之间的一组Pipe实现。同样处于Performance的原因,ASP.NETISAPI通过异步的方式将Request传到WorkerProcess并获得Response,但是WorkerProcess则是通过同步的方式向ASP.NETISAPI获得一些基于Server的变量。 IIS6的ASP.net请求处理过程 对图的解释: IIS5.x是通过InetInfo.exe监听Request并把Request分发到WorkProcess
7、。换句话说,在IIS5.x中对Request的监听和分发是在UserMode中进行,在IIS6中,这种工作被移植到KernelMode中进行,所有的这一切都是通过一个新的组件—http.sys来负责。 注:为了避免用户应用程序访问或者修改关键的操作系统数据,Windows提供了两种处理器访问模式:用户模式(UserMode)和内核模式(KernelMode)。一般地,用户程序运行在Usermode下,而操作系统代码运行在KernelMode下。KernelMode的代码允许访问所有系统内存和所有CPU指令。 在UserMode下,http.sys接收到一
8、个基于aspx的httprequest,然后它会根据
此文档下载收益归作者所有