http请求处理流程(讲的很清楚)

合集下载

前端开发中的HTTP请求处理

前端开发中的HTTP请求处理

前端开发中的HTTP请求处理随着互联网的快速发展,前端开发在今天的技术领域中显得越来越重要。

在前端开发中,处理HTTP请求是不可或缺的一项技能。

本文将就前端开发中的HTTP请求处理进行深入论述。

一、HTTP请求介绍HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体(如HTML)的应用层协议。

它是一种无状态的协议,客户端向服务器发送请求,服务器接收并返回响应。

HTTP请求通常包括请求方法、URL、头部信息和请求体等部分。

二、发起HTTP请求在前端开发中,我们通常使用浏览器来发起HTTP请求。

可以通过JavaScript代码创建XMLHttpRequest对象,并发送异步请求。

XMLHttpRequest对象可以向服务器发送不同类型的请求方法,如GET、POST等。

GET方法用于请求资源,请求参数会附带在URL的后面,可以直接通过URL中的查询字符串传递参数。

例如,发送一个GET请求并传递参数name=John:```var xhr = new XMLHttpRequest();xhr.open("GET", "/api/user?name=John", true);xhr.send();```POST方法用于提交数据,并将请求参数放在请求体中。

例如,发送一个POST请求并传递参数name=John:```var xhr = new XMLHttpRequest();xhr.open("POST", "/api/user", true);xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");xhr.send("name=John");```三、处理HTTP请求在前端开发中,我们通常需要处理服务器返回的响应数据。

http请求响应过程

http请求响应过程

http请求与响应过程(1)请求方法URI协议/版本请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。

根据HTTP标准,HTTP请求可以使用多种请求方法。

例如:HTTP1.1目前支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。

GET 请求获取由Request-URI所标识的资源。

POST 在Request-URI所标识的资源后附加新的数据。

HEAD 请求获取由Request-URI所标识的资源的响应消息报头。

OPTIONS 请求查询服务器的性能,或查询与资源相关的选项和需求。

PUT 请求服务器存储一个资源,并用Request-URI作为其标识。

DELETE 请求服务器删除由Request-URI所标识的资源。

TRACE 请求服务器回送收到的请求信息,主要用语测试或诊断。

在Internet应用中,最常用的方法是GET和POST。

URI完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。

(2)服务器响应状态码状态代码:状态代码由3位数字组成,表示请求是否被理解或被满足。

状态描述:状态描述给出了关于状态代码的简短的文字描述。

状态代码的第一个数字定义了响应的类别,后面两位没有具体的分类。

第一个数字有五种可能的取值:- 1xx: 指示信息—表示请求已接收,继续处理。

- 2xx: 成功—表示请求已经被成功接收、理解、接受。

- 3xx: 重定向—要完成请求必须进行更进一步的操作。

- 4xx: 客户端错误—请求有语法错误或请求无法实现。

- 5xx: 服务器端错误—服务器未能实现合法的请求。

状态代码状态描述说明200 OK --客户端请求成功400 Bad Request --由于客户端请求有语法错误,不能被服务器所理解。

Http请求处理流程

Http请求处理流程

Http请求处理流程本⽂结构:⼀、HTTP请求处理流程的基础1.⽹络分层因特⽹TCP/IP分层模型共有五层:应⽤层、传输层、⽹络层、⽹络接⼝层和物理层。

这种分层模型不同于OSI七层参考模型,但是,是实际使⽤中采⽤的分层⽅式。

ISO提出的OSI(Open System Interconnection)模型将⽹络分为七层,即物理层( Physical )、数据链路层(Data Link)、⽹络层(Network)、传输层(Transport)、会话层(Session)、表⽰层(Presentation)和应⽤层(Application)。

OSI中的层功能TCP/IP协议族应⽤层⽂件传输,电⼦邮件,⽂件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表⽰层数据格式化,代码转换,数据加密没有协议会话层解除或建⽴与别的接点的联系没有协议提供端对端的接⼝TCP,UDP⽹络层为数据包选择路由IP,ICMP,RIP,OSPF,BGP,IGMP传输有地址的帧以及错误检测功能SLIP,CSLIP,PPP,ARP,RARP,MTU 物理层以⼆进制数据形式在物理媒体上传输数据ISO2110,IEEE802。

IEEE802.2TCP/IP分层模型(TCP/IP Layering Model)被称作因特⽹分层模型(Internet Layering Model)、因特⽹参考模型(Internet Reference Model)。

TCP/IP是事实的标准,所以⾃然取其前三层协议【应⽤层、传输层、⽹络层(⽹间层)】作为⽹络分层。

⽽⼜, TCP/IP标准并不定义与OSI七层参考模型中的数据链路层和物理层相对应的功能。

为了衔接这两层,它定义了像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP 协议的数据结构和实际物理硬件之间的接⼝。

所以,将在⽹络层(⽹间层)之下,将由ARP、RAPR等协议组成的层,作为新的⼀个分层(⽹络接⼝层)。

一次完整的浏览器请求流程

一次完整的浏览器请求流程

⼀次完整的浏览器请求流程当我们在浏览器的地址栏输⼊,然后回车,回车这⼀瞬间到看到页⾯到底发⽣了什么呢?域名解析 --> 发起TCP的3次握⼿ --> 建⽴TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图⽚等) --> 浏览器对页⾯进⾏渲染呈现给⽤户1.域名解析⾸先Chrome浏览器会解析 这个域名(准确的叫法应该是主机名)对应的IP地址。

怎么解析到对应的IP地址?① Chrome浏览器会⾸先搜索浏览器⾃⾝的DNS缓存(缓存时间⽐较短,⼤概只有1分钟,且只能容纳1000条缓存),看⾃⾝的缓存中是否有 对应的条⽬,⽽且没有过期,如果有且没有过期则解析到此结束。

注:我们怎么查看Chrome⾃⾝的缓存?可以使⽤ chrome://net-internals/#dns 来进⾏查看②如果浏览器⾃⾝的缓存⾥⾯没有找到对应的条⽬,那么Chrome会搜索操作系统⾃⾝的DNS缓存,如果找到且没有过期则停⽌搜索解析到此结束.注:怎么查看操作系统⾃⾝的DNS缓存,以Windows系统为例,可以在命令⾏下使⽤ ipconfig /displaydns 来进⾏查看③如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts⽂件(位于C:\Windows\System32\drivers\etc),看看这⾥⾯有没有该域名对应的IP地址,如果有则解析成功。

④如果在hosts⽂件中也没有找到对应的条⽬,浏览器就会发起⼀个DNS的系统调⽤,就会向本地配置的⾸选DNS服务器(⼀般是电信运营商提供的,也可以使⽤像Google提供的DNS服务器)发起域名解析请求(通过的是UDP协议向DNS的53端⼝发起请求,这个请求是递归的请求,也就是运营商的DNS服务器必须得提供给我们该域名的IP地址),运营商的DNS服务器⾸先查找⾃⾝的缓存,找到对应的条⽬,且没有过期,则解析成功。

Http请求详解(转)----请求+响应各字段详解

Http请求详解(转)----请求+响应各字段详解

Http请求详解(转)----请求+响应各字段详解参考1. HTTP请求格式⾸先介绍HTTP协议:(HTTP,HyperText Transfer Protocol)是上应⽤最为⼴泛的⼀种。

所有的⽂件都必须遵守这个标准。

⼯作原理:1. 由HTTP客户端发起⼀个请求,建⽴⼀个到服务器指定端⼝(默认是)的TCP连接。

连接2. HTTP服务器则在那个端⼝监听客户端发送过来的请求。

⼀旦收到请求,请求3. 服务器(向客户端)发回⼀个状态⾏,⽐如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的⽂件、错误消息、或者其它⼀些信息。

响应4. 客户端接收服务器所返回的信息通过浏览器显⽰在⽤户的显⽰屏上,然后客户机与服务器断开连接显⽰内容HTTP使⽤TCP⽽不是UDP的原因在于(打开)⼀个⽹页必须传送很多数据,⽽TCP协议提供传输控制,按顺序组织数据,和错误纠正。

做过Socket编程的⼈都知道,当我们设计⼀个通信协议时,“消息头/消息体”的分割⽅式是很常⽤的,消息头告诉对⽅这个消息是⼲什么的,消息体告诉对⽅怎么⼲。

HTTP协议传输的消息也是这样规定的,每⼀个HTTP包都分为HTTP头和HTTP体两部分,消息体是可选的,⽽消息头是必须的。

每当我们打开⼀个⽹页,在上⾯点击右键,选择“查看源⽂件”,这时看到的HTML代码就是HTTP的消息体,那么消息头可以通过浏览器的开发⼯具或者插件可以看到,如果⽕狐的Firebug,IE的Httpwatch。

HTTP请求是指:客户端通过发送 HTTP 请求向服务器请求对资源的访问。

它向服务器传递了⼀个数据块,也就是请求信息,HTTP 请求由三部分组成:请求⾏、请求头和请求正⽂。

请求⾏:请求⽅法 URI 协议/版本请求头(Request Header)请求正⽂下⾯是⼀个HTTP请求的数据:POST /index.html HTTP/1.1 请求⽅法 url 协议/版本号Host: localhost 主机地址User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-cn,zh;q=0.5Accept-Encoding: gzip, deflateConnection: keep-aliveReferer: <a target=_blank href="http://localhost/" style="color: rgb(51, 102, 153); text-decoration: none;">http://localhost/</a>Content-Length:25Content-Type:application/x-www-form-urlencoded请求空⾏标志着请求头结束,请求正⽂(请求体)的开始username=aa&password=12341、请求⾏:请求⽅法URI协议/版本请求的第⼀⾏是“⽅法 URL 协议/版本”,并以回车换⾏作为结尾。

http流程

http流程

http流程HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的通信协议,是构建Web应用程序的基础。

在这篇文章中,我们将介绍HTTP的一般流程。

HTTP是基于客户端-服务器模型的协议,其中客户端通过发送HTTP请求来请求服务,服务器则通过发送HTTP响应来提供服务。

以下是HTTP的一般流程:1. 客户端发起请求:首先,客户端(例如浏览器)需要向服务器发送HTTP请求。

该请求通常由请求方法(例如GET、POST等)、请求头和请求体组成。

请求方法指定了客户端希望服务器执行的操作,例如获取资源、提交表单等。

2. 服务器处理请求:当服务器接收到客户端的请求后,它会根据请求方法和请求URL(Uniform Resource Locator)来确定要执行的操作。

服务器可能需要访问数据库、处理业务逻辑等。

3. 服务器发送响应:一旦服务器完成请求的处理,它会生成一个HTTP响应并将其发送回客户端。

响应通常包括状态码、响应头和响应体。

状态码用于指示请求的结果,例如200表示成功,404表示未找到,500表示服务器错误等。

4. 客户端接收响应:客户端接收到服务器发送的HTTP响应后,它会解析响应并根据需要进行处理。

例如,如果客户端接收到的是HTML响应,它可能会将其渲染为可视化的网页。

这是HTTP的基本流程。

然而,为了更好地保证通信的安全性和可靠性,现代的Web通信中通常还会涉及其他的步骤,例如:1. 建立安全连接:为了保护通信的安全性,客户端和服务器之间通常会建立安全连接。

一种常见的方法是使用HTTPS (HTTP Secure),它在HTTP的基础上添加了加密和身份验证的功能。

2. 身份验证:当客户端发送请求时,服务器可能需要对客户端进行身份验证,以确保只有经过授权的用户才能访问受保护的资源。

身份验证通常使用用户名和密码或令牌进行。

3. 会话管理:为了实现跨请求的状态保持,服务器可以使用会话管理技术。

web服务的工作流程

web服务的工作流程

web服务的工作流程
Web服务是一种基于互联网的技术,通过使用HTTP协议来传输数据和与客户端进行通信。

它的工作流程包括以下几个关键步骤。

客户端发送一个HTTP请求到服务器。

这个请求包含了客户端想要获取的资源的URL以及其他必要的参数。

服务器收到请求后,开始处理。

接下来,服务器根据请求中的URL和参数,决定要执行的操作。

这可以是读取数据库、调用其他服务或生成动态内容等。

服务器通过应用程序来处理请求,并生成响应。

然后,服务器将生成的响应发送回客户端。

这个响应包含了HTTP 状态码、响应头和响应体。

HTTP状态码表示请求的处理结果,比如200表示成功,404表示资源未找到等。

响应头包含了一些元数据,比如响应的内容类型和长度等。

响应体则包含了实际的数据。

客户端收到服务器的响应后,根据响应的内容进行处理。

这可以是展示网页内容、保存数据或执行其他操作等。

需要注意的是,Web服务可以是无状态的,也可以是有状态的。

无状态的Web服务不会保存客户端的状态信息,每次请求都是独立的。

有状态的Web服务会保存客户端的状态信息,以便在后续的请求中使用。

总结一下,Web服务的工作流程可以概括为客户端发送请求、服务器处理请求并生成响应,客户端接收响应并进行相应的处理。

通过这样的流程,Web服务可以实现各种功能,为用户提供丰富多样的服务。

HTTP请求方法详解

HTTP请求方法详解

HTTP请求方法详解GETGET方法意思是获取被请求URI(Request-URI)指定的信息(以实体的格式)。

如果请求URI涉及到一个数据生成过程,那么这个过程生成的数据应该被作为实体在响应中返回而不是过程的源文本,除非源文本恰好是过程的输出。

如果请求消息包含If-Modified-Since,,If-Unmodified-Since,If-Match,If-None-Match 或者If-Range头域,GET的语义将变成“条件(conditionall)GET”。

一个条件GET方法会请求满足条件头域的实体。

条件GET方法的目的是为了减少不必要的网络使用,这通过允许利用缓存里仍然保鲜的实体而不用多次请求或传输客户端已经拥有的实体来实现的。

.如果请求方法包含一个Range头域,那么GET方法就变成“部分Get”(partial GET)方法。

一个部分GET会请求实体的一部分,这在14.35节里描述了。

部分GET方法的目的是为了减少不必要的网络使用,可以允许客户端从服务器获取实体的部分数据,而不需要获取客户端本地已经拥有的部分实体数据。

GET请求的响应是可缓存的(cacheable)如果此响应满足第13节HTTP缓存的要求。

看15.1.3节关于GET请求用于表单时安全考虑。

HEADHEAD 方法和GET 方法一致,除了服务器不能在响应里返回消息主体。

HEAD请求响应里HTTP头域里的元信息(译注:元信息就是头域信息)应该和GET请求响应里的元信息一致。

此方法被用来获取请求实体的元信息而不需要传输实体主体(entity-body)。

此方法经常被用来测试超文本链接的有效性,可访问性,和最近的改变。

. HEAD请求的响应是可缓存的,因为响应里的信息可能被缓存用于更新以前那个资源对应缓存的实体.。

如果出现一个新的域值指明缓存的实体和当前源服务器上的实体有所不同(可能因为Content-Length,Content-MD5,ETag或Last-Modified值的改变),那么缓存(cache)必须认为缓存项是过时的(stale)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.NET平台处理HTTP请求.NET平台处理HTTP请求的过程大致如下:1、IIS得到一个请求;,。

2、查询脚本映射扩展,然后把请求映射到文件3、代码进入工作者进程(IIS5里是;IIS6里是,工作者进程也叫辅助进程;4、 .NET运行时被加载;5、非托管代码调用()方法;6、每一个请求调用一个IsapiWorkerRequest;7、使用WorkerRequest调用()方法;8、通过传递进来的WorkerRequest创建一个HttpContext对象9、通过把上下文对象作为参数传递给(),然后调用该方法,从应用程序池中获取一个HttpApplication实例;10、调用(),启动管道事件序列,钩住模块和处理器;11、调用,开始处理请求;12、触发管道事件;13、调用HTTP处理器和ProcessRequest方法;14、把返回的数据输出到管道,触发处理请求后的事件。

当客户端向Web服务器请求一个页面文件时,这个HTTP请求会被进程截获(WWW服务),它判断文件后缀,如果是*.aspx、*.asmx等,就把这个请求转交给,而则会通过一个Http PipeLine的管道,将这个HTTP请求发送给进程,当这个HTTP请求进入进程之后, framework就会通过HttpRuntime来处理这个HTTP 请求,处理完毕后将结果返回给客户端。

当一个HTTP请求被送入到HttpRuntime之后,这个HTTP请求通过HTTP管道(HttpRuntime是HTTP管道的入口)被送入到一个被称之为HttpApplication Factory的一个容器当中,而这个容器会给出一个HttpApplication实例来处理传递进来的HTTP请求,同时HttpApplication实例会创建一个HttpContext对象来记录HTTP请求的上下文,而后这个HTTP请求会依次进入到如下几个容器中:HttpModule --> HttpHandler Factory --> HttpHandler当系统内部的HttpHandler的ProcessRequest方法处理完毕之后,整个Http Request就被处理完成了。

如果想在中途截获一个HttpRequest并做些自己的处理,就应该在HttpRuntime运行时内部来做到这一点,确切的说时在HttpModule这个容器中做到这个的。

过程详解:从本质上讲,主要是由一系列的类组成,这些类的主要目的就是将Http请求转变为对客户端的响应。

HttpRuntime类是的一个主要入口,它有一个ProcessRequest方法,这个方法以一个 HttpWorkerRequest 类作为参数。

HttpRuntime类几乎包含着关于单个Http请求的所有信息:所请求的文件、服务器端变量、QueryString、Http头信息等等。

使用这些信息来加载、运行正确的文件,并且将这个请求转换到输出流中,一般来说,就是HTML页面;二般来说,也可以是张图片^_^。

对于IIS来说,它依赖于一个叫做的内置驱动程序来监听来自外部的HTTP 请求。

在系统启动的时候,IIS首先在中注册自己的虚拟路径(实际上相当于告诉哪些URL是可以访问的,哪些是不可以访问的。

举个简单的例子:为什么你访问的文件不存在时会出现404 错误呢?就是在这一步确定的)。

服务器处理一个.htm页面和一个.aspx页面肯定是不一样的,那IIS依据什么去处理呢?――根据文件的后缀名。

能够处理各种后缀名的应用程序,通常被称为 ISAPI 应用程序(Internet Server Application Program Interface互联网服务器应用程序接口),它的主要工作是映射所请求的页面(文件) 和与此后缀名相对应的实际的处理程序。

所有的.aspx文件实际上都是由这个程序来处理的,当IIS把对于.aspx页面的请求提交给了以后,它就不再关心如何处理这个请求了。

除了映射文件与其对应的处理程序以外,ISAPI还需要做一些其他的工作:1. 从中获取当前的Http请求信息,并且将这些信息保存到HttpWorkerRequest 类中。

2. 在相互隔离的应用程序域AppDomain中加载HttpRuntime。

3. 调用HttpRuntimeProcessRequest方法。

接下来就是程序员编写的代码(C#)所完成的工作了,然后,IIS接收返回的数据流,并重新返还给,最后,再将这些数据返回给客户端浏览器。

名词解释:IIS:Internet Information Server是一种基于Windows平台的网页服务(World Wide Web server)组件,其中包括WWW服务器、FTP服务器、NNTP服务器和SMTP 服务器,分别用于网页浏览、发布信息、文件传输、新闻服务和邮件发送等方面。

IIS的4个核心组件::将 HTTP 请求传送到用户模式应用程序的内核模式设备驱动程序。

WWW服务管理和监视组件:配置“万维网发布服务”(WWW服务)并管理工作进程。

工作进程:处理提交到分配给它们的Web应用程序的请求。

:主控配置数据库和非Web服务。

MSIL:Microsoft Intermediate Language,微软中间语言。

MSIL是将.Net代码转化为机器语言的一个中间过程,它是一种介于高级语言和基于Intel的汇编语言的伪汇编语言。

同一段MSIL代码可以被不同的编译器实时编译并运行在不同的结构上,因此MSIL本身与机器无关,可以在装有CLR的任一计算机上运行。

CLR:Common Language Runtime,公共语言运行时。

简单的理解,就是一个翻译,把.NET平台的各种语言(C#、VB、JS等)翻译为机器可以执行的语言。

.NET编译器将程序代码编译成MSIL(Microsoft Intermediate Language ,微软中间语言),然后再由CLR中的JIT(Just In Time,实时)编译器去编译成机器语言来执行。

CLR在功能上就如同一块虚拟的CPU,它执行MSIL代码、操作数据。

CLR 和真实CPU的类似之处在于它们都不直接操作内存中的变量而是使用程序变量的临时拷贝,CLR把这些程序变量存放在堆栈上。

从内存拷贝某个变量到堆栈的行为称作装载(loading),而从堆栈拷回某个变量到内存的行为则被称作存储(storing)。

HttpRuntime:配置 HTTP 运行时设置,这些设置确定如何处理对应用程序的请求,HttpRuntime类几乎包含了单个HTTP请求的所有信息,HttpRuntime是HTTP管道的入口。

HTTP请求到达时,将运行时库加载到要处理请求的进程中,还为将在 Web 服务器上运行的每个Web 应用程序创建一个应用程序域(AppDomain)。

HttpRuntime的ProcessRequest 方法驱动所有后续的 WEB处理。

AppDomain:AppDomain对象表示应用程序域,即一个应用程序执行的独立环境,为执行托管代码提供隔离、卸载和安全边界。

它是是微软基于.NET框架设计的概念,找不到其他技术体系中贴切的参照概念。

辅助进程为每个当前正在运行的应用程序维护一个特定的AppDomain。

一个进程中可以有多个AppDomain,但是一个AppDomain只能存在于某个进程中。

线程执行可以涉及多个AppDomain,但某个特定时刻线程仅存在于一个AppDomain中,且线程可以进入其他的AppDomain。

哪些情境下要使用AppDomain:1、需要隔离的程序集,譬如一些特别容易引起崩溃的代码可以考虑单独运行于一个特定的AppDomain。

2、不同安全级别的程序集,如果需要为自己的代码划分安全执行的边界,可以考虑将不同安全级别的代码单独创建于某个设定了不同安全信息的AppDomain。

3、从性能上考虑,有些程序集可能会消耗大量资源,尽管在托管环境下,基本上不存在资源消耗漏洞,但是总会存在特定时间访问密集造成消耗大量资源的情况,这时可以考虑创建单独的AppDomain,在资源消耗超过临界点后进行AppDomain的卸载,适应系统运行要求。

中利用不同的AppDomain来提供支持就是为了防止一个应用程序的崩溃影响其他应用程序,在不重新启动系统不重新启动IIS不影响自身服务提供的情况下将一个AppDomain卸掉同时启动新的AppDomain,理想情况下可以实现web系统的长时间在线(这以往是昂贵的UNIX 的特性,终于被MS借鉴了)。

4、不同版本的同一应用程序集的同时运行。

这个在COM时代是一个大问题,现在通过AppDomain,实现了在一个进程中执行版本不同的两个程序集,可以做到良好的兼容性。

5、动态加载一些程序。

HttpApplication:定义了所有应用程序的通用的方法、属性和事件。

是你实际可以看到的进入HTTP运行时(HttpRuntime)的第一个登录点,它对应到文件里定义的基类。

HttpApplication担当主容器,负责加载Web程序,当请求到来时触发事件以及在管道之间传输请求(事件消息的邮递者),然后通过传递HttpContext对象,把事件消息发送给调用的方法(在HttpModule和HttpHandler 中)。

每一个请求都将被路由到一个HttpApplication对象。

HttpApplicationFactory类会为你的程序创建一个HttpApplication对象池,它负责加载程序和给每一个到来的请求分发HttpApplication的引用。

这个HttpApplication对象池的大小可以通过里的ProcessModel节点中的MaxWorkerThreads选项配置,默认值是20(此处可能有误,根据Reflector反编译的代码,池的大小应该是100)。

HttpApplication对象池开始启动时通常只有一个HttpApplication对象。

但是当同时有多个请求需要处理时,池中的对象将会随之增加。

而HttpApplication对象池,也将会被监控,目的是保持池中对象的数目不超过设置的最大值。

当请求的数量减小时,池中的数目就会跌回一个较小的值。

HttpApplication对象运行在AppDomain里。

HttpApplication的主要职责是作为HTTP管道的事件控制器,所以它的接口主要包含的是事件。

事件挂接是非常广泛的,包括以下这些:l BeginRequestl AuthenticateRequestl AuthorizeRequestl ResolveRequestCachel AquireRequestStatel PreRequestHandlerExecutel …Handler Execution…l PostRequestHandlerExecutel ReleaseRequestStatel UpdateRequestCachel EndRequestHttpModule:实现了接口的.NET组件。

相关文档
最新文档