这几天看了一些资料,梳理了下web方面的知识,发现很多东西都是知表面而不知背后真正的原理,于是用MindManager画了这幅图,不是很完整,不过在理解的过程中会陆续更新这张图(可点击或者另存为后查看大图),
看了godspeed的关于asp.net生命周期的一个系列很形象收获颇丰,零散的记录些重点以便复习:
服务器接收到来自浏览器端的请求根据后缀名是.aspx来确定接下来的工作交由ASP.NET处理ASP.NET先创建一个Context对象然后创建一个Request对象放到Context对象中,它包含了IIS传递给它的所有信息本次请求header + body接着又创建一个Respone对象用来装HTML,并放进Context中
IIS是怎么识别.aspx的过程:
请求到达IIS时候会根据应用程序配置找到.aspx对应的处理程序aspnet_isapi.dll
aspnet_isapi.dll创建并监视并持续监视一个aspnet_wp.exe进程(asp.net最重要的组件:worker process,几乎所有的工作都是在这个进程中完成,它在IIS6中被改名叫做w3wp.exe)IIS6则通过内核模式中的HTTP.SYS来“看”那些进来的Request。HTTP.SYS把进来的Request发送到相应的Application Pool(应用程序池)。应用程序池再把Request传递给aspnet_isapi来进行创建worker process的工作。IIS6中的worker process已经是w3wp.exe了。aspnet_isapi.dll在创建了worker process加载了CLR完成了托管环境的布局后,就什么都不管了。
Worker process开始管理一切,它把所有的工作都交给了HttpRuntime。
HttpRuntime雇佣了项目经理HttpApplication。然后,HttpRuntime并不是什么工作都没有做,它已经通过配置文件创建了所有的HttpModule并填写在了HttpApplication的“工作列表”中,项目经理HttpApplicaiton事根据这个列表来工作的。HttpRuntime也创建了HttpContext这个箱子并交给了项目经理HttpApplication
HttpRuntime所做的事情:
1,打造了HttpContext这个箱子来存储Request和Response
2,建立了工作列表HttpModule(通过配置文件创建了所有的HttpModule并填写在了HttpApplication的"工作列表"中)
3,雇佣了项目经理HttpApplication并把箱子Context交给它,然后把工作列表作为效绩考核列表也交给他。
4,等着返回结果
mmap文件下载:
看到本文的朋友如果觉得有错误请留言指出,谢谢