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

    .....

  • 相关阅读:
    AUDIT审计的一些使用
    HOW TO PERFORM BLOCK MEDIA RECOVERY (BMR) WHEN BACKUPS ARE NOT TAKEN BY RMAN. (Doc ID 342972.1)
    使用BBED理解和修改Oracle数据块
    Using Class of Secure Transport (COST) to Restrict Instance Registration in Oracle RAC [ID 1340831.1]
    调试利器GDB概念
    第4章 思科IOS
    第3章 ip地址和子网划分
    第2章 TCPIP
    2020年阅读过的黑客资源推荐篇
    第1章 计算机网络
  • 原文地址:https://www.cnblogs.com/JsonYang/p/3594989.html
Copyright © 2011-2022 走看看