zoukankan      html  css  js  c++  java
  • 一次http请求的全过程(附mmap文件下载)

    这几天看了一些资料,梳理了下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文件下载:

     一次http请求的全过程.mmap

    看到本文的朋友如果觉得有错误请留言指出,谢谢

  • 相关阅读:
    poj 2676 Suduku (dfs)
    poj 1562 Oil Deposits (dfs)
    poj 2907 Collecting Beepers (dfs)
    poj 1655 Balancing Act (树形dfs)
    poj 3411 Paid Roads (dfs)
    hdu 2896 病毒侵袭 (AC)
    hdu 3065 病毒侵袭持续中 (AC)
    poj 2251 Dungeon Master (bfs)
    java中debug使用
    Swing入门级小项目总结
  • 原文地址:https://www.cnblogs.com/aNd1coder/p/1952780.html
Copyright © 2011-2022 走看看