zoukankan      html  css  js  c++  java
  • 【asp.net IIS运行机制】个人总结

    IIS运行图

    图片引自【wenthink】的博文,原文地址:http://www.cnblogs.com/wenthink/archive/2013/05/06/HTTP_IIS_ASPNET_Pipeline.html

    IIS 运行机制详解

    本文以IIS6为例,因为IIS6之后,IIS有集成模式和经典模式了 注:集成模式,将IIS和aspnet_Isapi.dll 集成到一起了

    IIS中有用户模式和内核模式: ①:用户模式不能直接操作内存

                                         ②:内核模式,直接操作内存

    浏览器请求流程:

    ①:发送请求到服务器IIS

    ②:服务器IIS用户模式中的http.sys 接收到 http request

    ③:然后它会根据 IIS 中的 Metabase(IIS元数据,维护者Application Pool 和 Worker Process(w3wp.exe) 的Mapping(映射关系)。) 查看基于该请求的 应用程序,属于哪个 Application Pool(应用程序池), 如果该 Application Pool 不存在,则创建;否则直接将 request 发到对应 Application Pool 的 Queue中。 注: IIS6中有应用程序池机制,通过队列来保存已有的池,IIS7以后可以在IIS中创建网站时,指定某一网站使用某一个应用程序池 一个应用程序池对应着一个Worker Process(w3wp.exe)

    ④:WAS(Web Administrative Service)根据 IIS元数据中维护的映射关系 ,获取 应用程序池 Queue 对应的Worker Process(w3wp.exe),如果没有,就创建这样一个进程,然后将请求交给这个 w3wp.exe 执行(这里就是我们在调试程序时,可以在任务管理器中查看到的IIS启动进程)

    ⑤:在创建Worker Process(w3wp.exe)的时候就会根据后缀找到并加载对应的ISAPI扩展,可以在IIS中指定某些后缀的请求需要调用哪个ISAPI(这些扩展程序,在安装IIS后会在电脑C盘)

     ⑥:以ASPNET_ISAPI.DLL为例

          在Worker Process(w3wp.exe)被创建时,根据请求后缀加载ASPNET_ISAPI.DLL这个程序集,加载ASPNET_ISAPI.DLL时,就会加载ASP.NET应用程序的运行环境(CLR)

    ⑦:加载CLR后,由  AppManagerAppDomainFactory类中的Create方法,创建AppDomain(应用程序域)

        注:应用程序池用来分割每个程序的运行,保证程序运行的安全,一个应用程序池不能访问另一个应用程序池中的资源

    ⑧:然后在AppDomain中加载ISAPIRuntime

    .....

  • 相关阅读:
    readonly const
    多线程的安全性
    【C++】operator运算符重载
    C++ 多态的实现及原理(转载)
    C语言宽字符处理函数对照表
    UTF8编码规则(转)
    PE文件结构(转)
    C语言中宏定义
    汇编语言移位指令
    数组指针应该结合二维数组多维数组来理解
  • 原文地址:https://www.cnblogs.com/JsonYang/p/3594989.html
Copyright © 2011-2022 走看看