前言

  前前后后写了不少关于某些技术啥的博客,一直在追新求深,而真正使用上的时候才发现了解的太少太少了,从事.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. SpringBoot @EnableAutoConfiguration exclude属性失效

    本文链接:https://blog.csdn.net/yuan_ren_sheng/article/details/81516779 在学习SpringBoot的时候,入了不少的坑.今天学习@Spri ...

  2. Python面向对象继承案例

    面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继承 实现代码的重用,相同的代码不需要重复的编写 多态 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活 ...

  3. 2019 263云通信java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.263云通信等公司offer,岗位是Java后端开发,因为发展原因最终选择去了263云通信,入职一年时间了,也 ...

  4. python基础03day

    # 1. # 创建字符串变量的三种写法及其区别 # 代码: #‘’.“”.“““””” # 区别: # 2. # 简述,计算机编程语言的分类及特点 # 1.机器 # 2.汇编 # 3.高级 # 3.1 ...

  5. python day 22 CSS拾遗之箭头,目录,图标

    目录 day 4 learn html 1. CSS拾遗之图标 2. html文件的目录结构 3. CSS拾遗之a包含标签 4. CSS拾遗之箭头画法 day 4 learn html 2019/11 ...

  6. formData详细使用教程

    formData是ajax2.0(XMLHttpRequest Level2)新提出的接口,利用FormData对象可以将form表单元素的name与value进行组合,实现表单数据的序列化,从而介绍 ...

  7. Java 之 线程的生命周期(线程状态)

    一.线程的生命周期 (1)新建状态 new 好了一个线程对象,此时和普通的 Java对象并没有区别. (2)就绪 就绪状态的线程是具备被CPU调用的能力和状态,也只有这个状态的线程才能被CPU调用.即 ...

  8. BeanPostProcessor后置处理器原理以及ApplicationListener原理

    BeanPostProcessor:bean后置处理器,bean创建对象初始化前后进行拦截工作的 1.BeanFactoryPostProcessor:BeanFactory的后置处理器; 在Bean ...

  9. Unity手游汉化笔记②:使用UABE替换TTF字体

    总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html 目录 一.分析 二.思路 三.具体实践 四.总结 Unity版本:2018.4.5f1 工具 ...

  10. Centos7 rsync+inotify实现实时同步更新

    inotify slave部署      把master上指定文件下载到本地的主机指定目录 yum install rsync –y [root@localhost ~]# useradd rsync ...