IIS6能够为每一个不一样的虚拟目录建立不一样的程序池,这样缩小了IIS的Application Pool的颗粒度,不一样的虚拟目录之间是互不影响的。html
IIS6(和IIS7经典模式)是经过aspnet_isapi.dll(internet server application programming interface )即IIS应用程序接口来处理。api
而IIS7集成模式以后,不须要经过aspnet_isapi.dll浏览器
Http.sys:负责侦听(Listen)来自于外部的Http请求,根据请求的Url,并经过WAS监视程序获取applicationHost.Config,找到相应的应用程序池(Application Pool),当Http请求完成之后,它又负责将处理结果发送出去。服务器
http.sys内部创建一个缓冲区,将最近的请求处理结果保存起来。app
ApplicationPool:应用程序池,全部站点的处理都会发生在这里进程里,包括ISAPI dll的执行,当应用程序池接受到http请求后,交由程序池中运行的woker process:w3wp.exe(工做进程)来处理接下来的Http请求。spa
Worker Process:当工做进程接受到请求后,首先根据后缀名加载ISAPI拓展(如:aspx对应的映射是aspnet_isapi.dll),工做进程加载aspnet_isapi.dll后,由aspnet_isapi.dll负责加载Asp.net的运行环境CLR。ISAPI拓展是非托管代码和托管代码之间的桥梁。.net
WAS(Web Admin Service):这是一个监控程序,它一方面监控applicationHost.config,另外一方面也负责监控应用程序池(Application Pool)中的工做者进程的工做状态,必要时它会关闭一个老的工做进程并建立一个新的取而代之。server
一、当客户端浏览器开始 HTTP 请求一个WEB 服务器的资源时,HTTP.sys 拦截到这个请求。htm
二、HTTP.sys 联系 WAS服务 获取配置信息。blog
三、WAS 向配置存储中心(applicationHost.config)请求配置信息。
四、WWW 服务接收到配置信息,配置信息指相似应用程序池配置信息,站点配置信息等等。
五、WWW 服务使用配置信息去配置 HTTP.sys 处理策略。
六、WAS为请求建立一个进程(若是不存在的话)。
七、工做者进程处理请求并对HTTP.sys作出响应。
八、客户端接受处处理结果信息。