前言

  前前后后写了不少关于某些技术啥的博客,一直在追新求深,而真正使用上的时候才发现了解的太少太少了,从事.net开发三年有余了不是它不行了而是我坚持不住了,如今不得不向生活低头,这个系列作为三年技术知识的一个小小总结吧,最主要的是写给自己也许这些在技术大牛哪里根本不值一提,而我却把它当成我的全部.

简介

  主要剖析一下客户端(Browser)发送请求到服务端过程如何处理

ASP.NET请求解析

  IIS6

  请求流程:客户端向IIS发送请求,该请求由http.sys(监听),当监听到http请求时分配w3wp.exe运行进程进行(处理),若为静态请求直接返回客户端,其他则搜寻扩展程序表也就是(监控)程序(Metabase) 查找相应ISAPI.DLL处理,如图:

  

  IIS7

  与6相比较7不仅仅多了许多功能 其实本质上没有太大变化工作流程如图:

  

  

  1.IIS7 服务器不仅仅支持最大连接数限制还可以限制带宽使用

  2.IIS7增加了失败请求跟踪规则

   3.应用程序池单独权限设置

   此外.iis7与ii6 映射策略略有不同,当iis启用经典模式的时候与iis6一样使用aspnet_isapi.dll针对.aspx请求处理,但是当启用集成模式的时候则使用托管程序处理(System.Web.UI.PageHandlerFactory)

CLR处理机制

  

  

  如上图所示根据集成鱼托管模式区分调用有所差异aspnet_isapi.dll 工作原理如图:

  

  这里引用一下园子小哥的总结:  

  由ISAPI aspnet_isapi.dll加载CLR环境。

  1. IsapiRuntime运行时被加载,接管了HTTP请求后,创建IsapiWorkerRequest对象来封装当前的HTTP请求,随后把对象传递给ASP.NET运行时HttpRuntime。

  2. HttpRuntime会根据IsapiWorkerRequest对象创建表示当前HTTP请求的上下文对象HttpContext。

  3. HttpApplicationFactory会创建或者从HttpApplication对向池中选取可用的HttpApplication对象,处理完后释放。

  4. HttpApplication在初始化中,ASP.NET会根据配置文件加载HttpModule对象(用于注册HttpApplication对应的事件,将所需的操作注入Htt请求的处理流程)

  5. Http请求最终由HttpHandler处理。不同的资源类型对应不同的HttpHandler。

总结

  

  首先,浏览器尝试连接Web服务器的80端口,如果Web服务器可以响应此连接请求,就在浏览器与Web服务器间建立了一个通讯链路,在此“通道”上浏览器与Web服务器可以相互发送与接收信息。

假设浏览器向Web服务器发出一个读取某ASP.NET站点上的某个ASPX网页的请求。当此请求通过网络到达Web服务器时,此请求被HTTP.SYS组件所接收。HTTP.SYS系统组件会检查此HTTP请求的相关信息,根据其URL将此HTTP请求发送给运行在某个应用程序池中的工作者进程处理。如果同时有多个针对此ASP.NET站点的HTTP请求,HTTP.SYS会将这些请求排队,加入到对应的应用程序池的HTTP请求队列中等待。

如果这是第一个对ASP.NET站点的HTTP请求,工作者进程会加载aspnet_isapi.dll,并将请求转给它,aspnet_isapi.dll接着会装载.NET CLR,创建一个针对此ASP.NET站点的应用程序域,然后启动一个复杂的由多个步骤和组件参与的处理流程,当此处理流程结束,要发回给客户端的结果(通常是HTML代码,当然也可以是其他类型的资源,比如由程序动态生成的图片)已经生成,此结果被转发给HTTP.SYS。

  注意:对于以集成模式运行的IIS 7,.NET CLR在应用程序池一启动就自动装载,从而避免了临时装载CLR的花销。后继处理过程与IIS 6基本一致。

.NET总结--ASP.NET工作原理的更多相关文章

  1. IIS站点工作原理与ASP.NET工作原理

    IIS站点工作原理与ASP.NET工作原理  一.IIS IIS 7.0工作原理图 两种模式: 1.用户模式(User Mode)(运行用户的程序代码.限制在特定的范围内活动.有些操作必须要受到Ker ...

  2. Asp.Net工作原理

    1. ASP.NET页面的的一般处理过程: 客户请求WEB页面 WEB服务寻找指令文件(.ASPX) ASP.NET代码被发送给CLR进行编译 HTML流返回给浏览器和指令 浏览器处理HTML并显示页 ...

  3. JavaWeb与Asp.net工作原理比较分析

    一.概述 不管是什么语言开发的web应用程序,都是在解决一个问题,那就是用户输入url怎么把对应的页面响应出来,如何通过url映射到响应的类,由于自己做asp.net的时间也不短了,还算是对asp.n ...

  4. ASP.NET和IIS工作原理

    图为iis6.0运行asp.net的原理. browser向iis发送HTTP请求,HTTP.SYS将其分发给W3SVC(World Wide Web Publishing Service),后者解析 ...

  5. Asp.net 的工作原理

     转:http://www.cnblogs.com/linjiancun/archive/2010/09/14/1825662.html 1.1.1          Asp.net 的工作原理 ...

  6. 简述ASP.NET Web网页的工作原理。

    ASP.NET的工作原理是:首先,有一个HTTP请求发送到Web服务器要求访问一个Web网页. Web服务器通过分析客户的HTTP请求来定位所请求网页的位置.如果所请求的网页的文件名的后缀是 aspx ...

  7. (24)ASP.NET Core EF查询(查询的工作原理、跟踪与非跟踪查询)

    1.查询生命周期 在进入正题时候,我们先来了解EF Core查询的生命周期. 1.1LINQ查询会由Entity Framework Core处理并生成给数据库提供程序可处理的表示形式(说白了就是生成 ...

  8. MVC中RenderBody的工作原理

    A)什么是RenderBody  根据MSDN的解释(http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US& ...

  9. 简述ASP.NET MVC原理

    1.为什么ASP.NET需要MVC? 因为随着网站的的数量级越来越大,原始的网站方式,这里指的是WebForm,在运行速度和维护性方面,以及代码量上面,越来越难以满足日益庞大的网站维护成本.代码的重构 ...

随机推荐

  1. Windwos利用批处理文件自动清理归档日志,计划任务

    首先在X盘根目录建立一个文档  cmd.txt 打开cmd.txt这个文本文件,在里面第一行写入 DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3'; ...

  2. CodeForces 955D Scissors

    昨晚CF比赛比较颓,今天有心情写题解就不错了QWQ 洛谷题目页面传送门 & CodeForces题目页面传送门 给定字符串\(a,b,|a|=n,|b|=m\),求是否可以在\(a\)中选\( ...

  3. IDEA新建一个Spring Boot项目

    Maven构建项目模板 maven构建的是maven风格的纯净模板,要转变成spring boot项目需要自己添加依赖等配置. mvn archetype:generate: Maven插件原型是一个 ...

  4. 封装axios,带请求头和响应头

    import axios from "axios"; import qs from "qs"; //处理参数 import router from '../ro ...

  5. Java语言的介绍

    1. 计算机语言 语言:沟通交流的方式 计算机语言:人与计算机之间的交流方式 java是一门计算机编程语言,也是意大利自行车品牌 软件工程师,java开发工程师 <--------------- ...

  6. OCR1:开源库

    OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形状翻译 ...

  7. idea git提交代码步骤(转载)

    参考一: https://blog.csdn.net/u013452337/article/details/79956604

  8. sqlserver语句随笔

    替换数据:update 表名 set 列=replace(列,'要替换的数据','替换成的数据'),例子:update kers set KeyConn=replace(KeyConn,'-','/' ...

  9. vue2.0 在页面中使用process获取全局路径的时候 报错 process is not defined

    如果是刚配置好的全局变量需要 重新启动一下vue才能通过proccess.env.xxx 获取到 如果想在html中使用 需要在data中声明一个变量 然后在vue生命周期中 将process.env ...

  10. TI DSP数据长度

    环境CCS7.2 平台C6748 结果: sizeof short int is 2sizeof int is 4sizeof long is 4sizeof unsigned long is 4si ...