ASP.NET请求处理机制分为经典形式和集成形式
经典形式
经典形式是为了与之前的版本兼容,运用ISAPI扩展来调用ASP.NET运转库,原先运转于IIS6.0下的Web应用程序迁移到IIS7.0中只需将应用程序配置成经典形式,代码根本不用修正就能够正常运转。
集成形式
集成形式是一种统一的乞求处置管道,它将ASP.NET恳求管道与IIS中心管道组合在一同,这种形式可以提供更好的性能,可以完成配置和管理的模块化,而且增加了运用托管代码模块扩展IIS时的灵敏性。假设老的Web应用程序运转于IIS7.0的集成形式下,可能需求对应用程序的web.config文件停止修正,特别是运用了完成IHttpHandler接口的自定义模块的状况。IIS7.0在同一个效劳器上可以同时支持两种形式的应用程序。
一、收到一个请求,客户端发送给服务器端
二、一个http请求对应一个http报文(http://......)
三、http.sys组件获取http请求,转交给iis做处理,过程中,先通过缓存查看是否有缓存,
若有缓存直接从缓存区读取缓存交给iis,没有就响应请求后交给iis。
四、服务器iis收到请求后,判断请求的内容是否动静态资源,是静态资源,直接读取;
若是动态资源,处理动态资源,交给查询映射表查找由哪个扩展程序来处理这个请求,一般由aspnet_isapi.dll这个组件进行处理,生成响应请求后读取。
五、动态资源 W3WP.exe 会加载 aspnet_isapi.dll
当客户端向web服务器请求一个*.aspx的页面文件时,同asp类似,这个http请求也会被inetinfo.exe进程截获(www服务),它判断文件后缀之后,把这个请求转交给ASPNET_ISAPI.DLL而ASPNET_ISAPI.DLL则会通过一个Http PipeLine的管道,将这个http请求发送给ASPNET_WP.EXE进程,当这个HTTP请求进入ASPNET_WP.EXE进程之后,asp.net framework就会通过HttpRuntime来处理这个Http请求,处理完毕后将结果返回给客户端。
六、NET运行时的加载 .NET Runtime
如果Web应用程序是第一次加载,那么首先会由aspnet_isapi.dll加载.NET运行时(主要是调用服务器上的.Net Framework创建CLR运行时)。而一个IIS工作进程里有一个应用程序池,其中可以承载多个应用程序域AppDomain。
七、应用程序池
应用程序池就是可以看成装载计算机分配给动态网站的内存的容器
八、应用程序域
使用.NET建立的可执行程序,并没有直接承载到进程当中,而是承载到应用程序域(AppDomain)当中。应用程序域是.NET引入的一个新概念,它比进程所占用的资源要少,可以被看作是一个轻量级的进程。
九、ISAPIRuntme.ProcessRequest()方法是进入ASP.Net的第一个入口,ASP.Net的核心处理部分就刚刚开始。此篇我将其称为前奏,是因为它是在ASP.Net的核心处理部分之前,将HTTP请求一步一步地传递给了ISAPIRuntime对象,后面我们再继续探索ASP.Net的请求处理机制,今天就到此结束!