• 请求处理过程


    浏览器 

    发送请求(get/post)

    根据Ip地址和端口 

    找到服务器 

    然后将请求报文

    发给服务器

    服务器上电脑 装的操作系统一般分为内核模式/用户模式

    内核模式

    操作系统的底层文件都运行在内核模式下,里面文件不能随意删除

    Http.SYS 系统重要文件 :会对请求报文做最基本的处理,分析一下IP,端口号,然后转交给 用户模式中的IIS

    用户模式

    我们安装的软件都是运行下用户模式之下

    IIS接收报文做处理,分析请求报文中所包含的文件扩展名,发现动态文件转交给

    aspnet_iisapi.dll文件

    工作进程W3WP.exe   作用:  应用程序池 :隔离机制

     每个网站对应一个进程

    W3WP.exe  

    分为两种模式

     非托管模式

    aspnet_iisapi.dll(起到桥梁作用 加载.netframework运行时)

    不在.netframework上写的程序理解成非托管

    不通过.netframework上写的程序(C语言,C++...)都是非托管

    托管模式

    .netframework

    在.netframework上写的程序都是托管

    我们写的代码由.netframework编译生成,最终 二进制....然后交给CPU执行

    以上内容不能开源码

    IISAPIRuntime 接口

    ISAPIRuntime这个类继承IISAPIRuntime 接口是进入.netframework入口

          | 

    ProcessRequest(IntPtr ecb)

    ecb是一个资源编号  (请求报文的资源编号) 根据ecb句柄创建了HttpWorkerRequest

    HttpWorkerRequest封装了最原始的请求报文数据

    HttpContexts是根据HttpWorkerRequest封装

    请求报文数据最终都在HttpContext里面

    HttpContexts创建时,也创建了HttpRequest和HttpResponse

    对封装的报文数据进行处理 

    在HttpApplicationFactory中处理请求报文数据

    IHttpHandler applicationInstance=HttpApplication(完成HttpContext处理),在创建HttpApplication时用到了池,该池就是个栈

    栈:先进后出  队列:先进先出

    连接对象先放到池里面,一个请求过来要求连接数据库,先开一下池里有没有空闲连接对象,有拿过来用,没有再创建,避免了频繁创建,池本质上就是集合

    如果池中有空闲的直接获取一个HttpApplication ,

    如果没有则创建一个HttpApplication..

    将HttpContext传递到了HttpApplication中的ProcessRequest方法中,该方法中执行了管道事件(里面有19个事件,20多个管道)

    请求管道(过滤器)

    在请求管道中第8个事件,主要完成的是对用户请求的文件类的实例创建(根据HttpContext封装的报文的文件类的实例进行创建new)

    根据HttpContext封装的报文获取具体的文件)

    都必须实现IHttpHandler接口

    在请求管道第11个事件与第12个事件之间,执行了页面类中的代码,如果请求的是一般处理程序,之间

    执行了一般处理程序中的ProcessRequest中的代码,如果是请求的是aspx,那么执行的是Page_Load中的代码

    什么时候用到池这种技术?某一个对象经常被创建,创建对象的时候耗费的资源比较大

    句柄:操作系统中的概念,将所有的资源都加了编号,根据资源编号找到资源进行操作.

    最终还是让操作系统操作我们的文件

  • 相关阅读:
    大的FIbonacci数列_Java求法
    HDU1134_Game of Connections 卡特兰数
    oracle中查询锁表
    SpringBoot之使用Druid连接池以及SQL监控和spring监控
    用vue封装插件并发布到npm
    vue 预览 Excel 表格
    vue + elementUI 表格 底部 合计总数
    springboot项目中实现访问druid内置监控页面
    解决Elementui eltable合计 showsummary不显示,样式混乱问题
    Druid连接池:慢查询监控
  • 原文地址:https://www.cnblogs.com/ligtcho/p/6583210.html
Copyright © 2020-2023  润新知