IIS⼯作原理之⾮托管代码旅程(⼀)
IIS6改变
IIS6可以为每个不同的虚拟⽬录创建不同的程序池,这样缩⼩了IIS的Application Pool的颗粒度,不同的虚拟⽬录之间是互不影响的。
IIS6(和IIS7经典模式)与IIS7集成模式最⼤的区别
IIS6(和IIS7经典模式)是通过aspnet_isapi.dll(internet server application programming interface )即IIS应⽤程序接⼝来处理。
⽽IIS7集成模式之后,不需要通过aspnet_isapi.dll
名词解释:
Http.sys:负责侦听(Listen)来⾃于外部的Http请求,根据请求的Url,并通过WAS监视程序获取applicationHost.Config,到相应的应⽤程序池(Application Pool),当Http请求完成以后,它⼜负责将处理结果发送出去。
http.sys内部建⽴⼀个缓冲区,将最近的请求处理结果保存起来。
ApplicationPool:应⽤程序池,所有站点的处理都会发⽣在这⾥进程⾥,包括ISAPI dll的执⾏,当应⽤程序池接受到http请求后,交由程序池中运⾏的woker (⼯作进程)来处理接下来的Http请求。
Worker Process:当⼯作进程接受到请求后,⾸先根据后缀名加载ISAPI拓展(如:aspx对应的映射是aspnet_isapi.dll),⼯作进程加载aspnet_isapi.dll后,由aspnet_isapi.dll负责加载Asp的运⾏环境CLR。ISAPI拓展是⾮托管代码和托管代码之间的桥梁。
WAS(Web Admin Service):这是⼀个监控程序,它⼀⽅⾯监控fig,另⼀⽅⾯也负责监控应⽤程序池(Application Pool)中的⼯作者进程的⼯作状态,必要时它会关闭⼀个⽼的⼯作进程并创建⼀个新的取⽽代之。aspnet和net的区别
IIS⾮托管旅程地图
1、当客户端浏览器开始 HTTP 请求⼀个WEB 服务器的资源时,HTTP.sys 拦截到这个请求。
2、HTTP.sys 联系 WAS服务获取配置信息。
3、WAS 向配置存储中⼼(fig)请求配置信息。
4、WWW 服务接收到配置信息,配置信息指类似应⽤程序池配置信息,站点配置信息等等。
5、WWW 服务使⽤配置信息去配置 HTTP.sys 处理策略。
6、WAS为请求创建⼀个进程(如果不存在的话)。
7、⼯作者进程处理请求并对HTTP.sys做出响应。
8、客户端接受到处理结果信息。
参考:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论