名词解析
IIS Web服务器
若要运行 ASP.NET Web 应用程序,需要一台 Web 服务器。用于 Microsoft 操作系统的成品 Web 服务器是 IIS,它包括 Web 服务器、文件传输协议 (FTP) 服务器、简单邮件传输协议 (SMTP) 虚拟电子邮件服务器以及其他设备。
进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础;
HTTP.SYS
HTTP.SYS是TCP之上的一个网络驱动程序,HTTP.SYS不属于IIS;
HTTP.SYS运行在内核模式下,作为操作系统的驱动程序运行。因此,HTTP.SYS不会受到用户代码的影响,它始终处于稳定运行状态,对用户的http请求进行监听,并及时作出反应。
IIS处理 图示
当服务器收到请求之后,请求会最终到达TCPIP.SYS 驱动程序(windows),然后转交 HTTP.SYS网络驱动程序中;
- 在HTTP.SYS 中会维护一个请求队列,当处理一个请求时会读取配置表(url和应用程序池关系 图片 2);
- 如果没有启动时,会通过 svchost.exe进程中的W3SVC服务根据IIS配置启动应用程序池;如果启动 HTTP.SYS会将请求转交给IIS管理;到此HTTP.SYS 的任务完成了一部分了;
当请求转交给IIS时
- IIS会根据请求内容(静态文件图片,文本直接转为二进制流返回给 HTTP.SYS);
- 如果请求内容是动态文件(aspx,cshtml)时,一个新的对象w3wp.exe 会通过IIS配置加载请求文件对应的平台版本aspnet_isapi.dll(简称ISAPI );
- 当ISAPI(ASP.NET工作进程)运行之后,IIS将请求文件继续转交到ISAPI工作进程 IIS处理流程暂时结束了;后面的处理就交由ISAPI来完成了
下一篇 会了解请求到达ISAPI 时发生了什么
以上参考文档:
MSDN:[https://msdn.microsoft.com/zh-cn/library/58wxa9w5(v=vs.100).aspx]
MSDN:[https://msdn.microsoft.com/zh-cn/library/ee532866(v=vs.120).aspx]
博客园:[http://www.cnblogs.com/OceanHeaven/p/6502884.html]