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

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

  • 相关阅读:
    LeetCode_21.合并两个有序链表
    LeetCode_70.爬楼梯
    LeetCode_001.两数之和
    LeetCode_509.斐波那契数
    Eclipse(2019-03版本)汉化
    修改Gradle本地仓库
    解决Eclipse导入Gradle项目时在 Building gradle project info 一直卡住
    Eclipse设置字体大小
    @Transactional spring 事务(转载)
    @Transactional spring 事务失效(转载)
  • 原文地址:https://www.cnblogs.com/aNd1coder/p/1952780.html
Copyright © 2011-2022 走看看