ASP.NET运行机制原理

---浏览器与IIS的交互过程

一、浏览器和服务器的交互原理

()、浏览器和服务器交互的简单描述:

1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去访问一台电脑上访问文件一样,只不过浏览器的访问请求是由被访问的电脑上的一个 WEB服务器软件来接收处理,它会分析接收到的请求信息,从而按照请求信息来找到服务器电脑上的文件,经过处理,最终将生成的内容发回到浏览器。

简单的说就是:由浏览器生成一条“命令”,通过互联网发给另一台电脑的某个软件(服务器软件);服务器软件接收到“命令”,就分析理解这个“命令”,然后按照“命令”找到服务器电脑上的文件,将文件内容发送回浏览器。

2.通过上图,我们看到了浏览器和服务器交互的简单过程。现在,我们要想想,浏览器和服务器软件到底是神马东东,他们之间又是如何交互信息的呢?

其实,浏览器和服务器软件,就是两个独立的应用程序(就如qq、office、画图工具一样)。那么两个应用程序之间要交互信息,就牵扯到了应用程序通信的问题。那他俩是使用神马方式通信的呢?

答案是套接字:Socket。至于Socket的具体用法和原理,篇幅问题不在此文中写了,先预留位置在这,下次补上《基于多线程和套接字的简易WebServer软件-没有控件的ASP.NET

浏览器和服务器软件通过套接字来发送和接收对方的信息,但现在的关键问题是,他们发送和接收的到底是什么?--- 基于Http协议的报文数据(详见Http协议介绍---没有控件的ASP.NET

也就是说:浏览器和服务器软件其实就是两个使用Socket进行通信的的两个应用程序:双方都发送按照 Http协议语法规范组织的数据,接收到数据后都按照 Http协议语法规范来解释。

()、浏览器和IIS(or other webserver)交互机制

上图就是IIS (服务器软件)

1.浏览器和IIS交互过程:

我们都知道,在互联网上确定一台电脑的位置是使用IP寻址,但为什么当我们平时访问网站时直接输入一个域名也能够访问到某个服务器电脑进而由对方的服务器软件发送响应页面数据给我呢?下面我把简单步骤列出:

(1)在浏览器输入网址:www.oumind.com/index.html,浏览器按照Http协议语法 生成请求报文数据。

(2).浏览器检查本机是否保存了www.oumind.com/index.html. 域名对应的服务器IP地址。如果没有,则发送请求到所在城市网中最近的DNS服务器(域名解析服务器),它会根据我们发送来的域名查询到该域名对应的服务器IP地址,并发送回浏览器。

(3)浏览器从DNS服务器获得了 www.oumind.com/index.html域名对应的服务器电脑IP,则将 请求报文 通过Socket发送到服务器电脑。(注意:Http协议 规定服务器软件使用的默认端口是80,通俗的说,就是如果浏览器访问一个网站页面,浏览器默认就是将 请求报文 发送到服务器80端口,而服务器负责监听这个端口的软件一般就是服务器软件—比如asp.net用的IIS,java用的Tomcat。)

(4)IIS接收到 请求报文,分析请求报文,从中获取请求的页面路径 /index.html。判断页面的后缀名,如果是静态页面(.html/.jpg/.css/.js等),则直接由IIS软件的组件读取该文件内容,并将内容通过Socket发送回浏览器。

(5)但如果此时请求的是一个动态页面(.aspx/.ashx),IIS自己就处理不了 (因为IIS软件开发出来的时候,ASP.NET程序还不存在呢) 。所以,IIS就去它的 扩展程序映射表 中根据被请求文件后缀名 查看是否有能够处理这种文件的扩展程序

而我们ASPNET中常用的文件.aspx/.ashx等 对应的处理程序是aspnet_isapi.dll。如下图:

(6)如果IIS根据后缀名找到对应的处理程序,则通过调用此程序来处理浏览器发送来的请求报文。

至于,之后又进行了什么操作,请继续关注:

《ASP.NET运行机制原理02_ASP.NET整体运行机制01从浏览器到HttpApplication ---没有控件的ASP.NET》

转载请注明出处:ASP.NET运行机制原理01---浏览器与IIS的交互过程 开智网 http://www.oumind.com

ASP.NET页面运行机制以及请求处理流程

IIS自身是不能处理像ASPX扩 展名这样的页面,只能直接请求像HTML这样的静态文件,之所以能处理ASPX这样扩展名的页面,是因为IIS有一个ISAPI过滤器,它是一个COM组 件。ASP.NET服务在注册到IIS的时候,就会添加一个Win32的扩展动态库aspnet_isapi.dll。并将扩展可以处理的页面扩展名(如 ASPX)注册到IIS里面。扩展启动后,就根据定义好的方式来处理IIS所不能处理的页面。

当客户端请求一个服务器资源时,这个 HTTP请求会被inetinfo.exe进程截获(www服务),然后Check请求资源的类型,并依据资源映射信息(存储在IIS元库中,一种IIS 专用的配置数据库)将请求的资源分配给特定的处理程序模块。若请求的是静态资源(img,text,html等)则由IIS处理(IIS在本地Web Server上访问请求的文件),将内容输出到控制台,发出请求的浏览器就能接收到它了。若需要在服务器端处理的请求,则会被传到已注册的扩展模块 中,aspx请求会被分配给aspnet_isapi.dll,让这个程序开始处理代码,生成标准的HTML代码,然后将这些HTML加入到原有的 HTML中,最后把完整的HTML返回给IIS,IIS再把内容发送到客户浏览器。

ASP.NET FrameWork对请求的处理:

上面说到IIS将像ASPX这样的页面分配给aspnet_isapi.dll,接着处理如下:

1、aspnet_isapi.dll则会 通过一个Http PipeLine的管道将这个Http请求发给w3wp.exe(iis 工作者进程,IIS6.0中叫做 w3wq.exe,IIS5.0中叫做 aspnet_wp.exe),之后asp.net framework就会通过HttpRuntime来处理这个Http请求。

2、HttpRuntime首先会确定处理该请求的类名,HttpRuntime通过公共接口IHttpHandler来调用该类获取被请求资源的类的实例。

3、调用HttpRuntime.ProcessRequest开始处理要发送到浏览器的页面,具体说就是创建一个HttpContext实例,它封装了所有与请求有关的http特有的信息,并初始化一个Write对象用于缓存标记代码。

4、HttpRuntime使用上下文信息查找或新建能处理该请求的WEB应用程序的对象。由HttpApplication Factory负责返回HttpApplication实例。

5、HttpApplication实例会读取web.config中所有HttpModule的配置。

5、HttpApplication对象使用IHttpHandlerFactory类型的实例返回HttpHandler(http处理程序)给HttpRuntime对象。一个页面只是个http处理程序对象。

6、最后由HttpRuntime对象调用IHttpHandler的页面对象的ProcessRequest方法。

本文转载自  http://www.cnblogs.com/Joans/

转载于:https://www.cnblogs.com/feng-c-x/archive/2013/03/07/2947440.html

asp.net运行机制相关推荐

  1. WebForm页面生命周期及asp.net运行机制

    转载至:https://www.cnblogs.com/liangxiaofeng/p/5620033.html 1.先上几张原理图着重理解: 现在针对第四副图原理进行解析: 流程: 1.浏览器发送请 ...

  2. ASP.NET 运行机制详解

    1.浏览器和服务器的交互原理 通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去访问一台电脑上访问文件一样,只不过浏览器的访问请求是由被访问的电脑上的一个 WEB服务器软件来接收处理, ...

  3. ASP.NET运行原理和运行机制

    一.ASP.NET运行原理 当一个http(abbr. 超文本传输协议  hypertext transport protocol )请求发送过来并被IIS机收到之后,IIS(IIS 互联网信息服务信 ...

  4. Asp.Net母版页和内容页运行机制

    Asp.Net母版页和内容页运行机制 来自森大科技官方博客  http://www.cnsendblog.com/index.php/?p=96 从上面的讲解中可以看出,单独的母版页是不能被用户所访问 ...

  5. IIS和Asp.Net页面运行机制

    在.NET平台下进行Web开发主要运用的是Asp.Net框架,了解其运行机制更能让我们写出高质量的程序,修复不常见的bug. 最近想把这个用博客的形式记录下来.翻阅了一些书籍,浏览了一些大大们,如有雷 ...

  6. ASP .NET Core 的运行机制和启动(转)

    今天看到一位高人写的一篇讲述ASP .NET Core 的运行机制和启动的文章,非常好,部分内容转一下. ASP.NET Core 的启动和运行机制 - 车骑 - 博客园 (cnblogs.com)h ...

  7. ASP.NETt运行原理和运行机制

    当一个http请求发送过来并被IIS机收到之后,IIS首先通过你请求的页面类型为其加载相应的dll文件,然后在处理过程中将这条请求发送给能够处理这条请求的模块,而在ASP.NET中这个模块就叫做Htt ...

  8. 浅谈ASP.NET内部机制(五)

    浅谈ASP.NET内部机制(五) 前言:本章要谈页面生命周期了,过程挺多的,但是一点都不难.不信可以看看.我尽量的讲的平实一些,而且理解页面的生命周期对喜欢开发自定义控件和组件的朋友是很有帮助的. 系 ...

  9. IIS 内部运行机制

    ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用. 绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices ...

最新文章

  1. c 远程编辑linux文件,makefile - 在远程Linux机器上编译C ++ - “检测到时钟偏差”警告...
  2. (6)timedatetime(时间模块)
  3. 汇编语言 用加法计算123*236,结果存在ax中
  4. Docker使用Dockerfile构建镜像
  5. 您的Android版本不兼容,android – 您的设备与某些设备的此版本不兼容
  6. netmiko可以连接的设备有哪些_气体报警器可以联动哪些设备
  7. Tiktok现阶段最简单的三种变现模式,小白也可轻松上手
  8. JavaScript------表单约束验证DOM方法
  9. 【STM32】Keil v5下载与安装
  10. excel函数提取计算机登录名,excel常用函数怎么提取姓氏?excel常用函数提取姓氏的方法...
  11. 云计算机技术与应用学什么的,云计算技术与应用专业学什么 主要课程
  12. CnCerT.Net.SKiller工作原理
  13. adb命令删除offline离线手机设备
  14. 编写一个简单Java程序,计算银行年存款的本息
  15. Unity3D之协程(Coroutines Yield )
  16. 几十秒生产一瓶 浙江警方破获制售假冒“飞天茅台”案
  17. linux踢出硬盘,Linux MD/RAID 踢盘机制
  18. 中文维基百科的语料库下载和繁体转换为简体的操作
  19. THU2015 fall 1-1 Team
  20. 解决SupportAssist提示意外错误的问题

热门文章

  1. 如何在windows下使用linux命令
  2. html设置边框dw,Dreamweaver Css边框属性
  3. mysql事物日志工具_MySQL——常用工具和日志
  4. 转义字符 /r与/n的区别
  5. android判断和创建快捷方式(4.03测试通过)
  6. C专家编程—使用unsigned int可能产生的Bug(1)
  7. xml android 字体,自定义字体和XML布局(Android)
  8. 磁盘文件读写和数据库读写哪个效率更高
  9. 数组中只出现一次的数字+第一个只出现一次的字符
  10. 记录 之 tensorflow中几个常用的函数:tf.unstack,tf.concat() 和 tf.stack() 等