Asp.Net管道模型和页面生命周期

ASP.NET页面请求过程及生命周期管道事件

(补充)、什么浏览器?:1.就是一个Socket客户端,可以向服务器发送请求通信。2.渲染引擎:(加载html标签,渲染Css样式,执行JavaScript代码)。3.收集信息并展示信息的平台(软件)。
一、Asp.Net请求处理响应简要:
1.用户向服务器的某IP端口发送请求,此端口通过Http.sys来管理,请求报文被Http.sys接收,Http.sys在注册表中找能处理这个请求类型的应用程序,最终找到IIS,请求被提交到IIS服务器处理,IIS判断请求的类型。
如果请求的是静态文件,那么IIS会直接处理,在本地找到请求的静态文件,然后发送给浏览器。
如果是动态文件,如aspx或者ashx等动态文件,IIS就会去它的映射表里面去找,实现它接口的那个扩展程序可以处理这样的动态文件,然后IIS发现有个叫做aspnet_isapi的一个扩展程序可以处理处理像.aspx和.ashx这样后缀名的文件,那么IIS则把请求交给aspnet_isapi来处理。
2.aspnet_isapi将启动CLR(公共语言运行时),CLR负责启动asp.net框架的域,然后将请求交给asp.net框架来处理,框架里面有个一HttpRuntime类的对象,拿到用户的请求后,它负责将请求封装成HttpContext对象,调用application对象的ProcessRequest方法(HttpContext对象作为参数)处理请求 (Asp.Net管道和页面生命周期) ,最后处理完成后,返回给IIS,IIS再返回给浏览器,浏览器解析渲染呈现给用户。


二、ASP.NET WebForm或ASP.NET MVC 都是基于ASP.Net 管道模型的,换句话说,管道模型是整个asp.net的核心。
在System.Web的命名空间中处理HTTP请求主要使用管道模型。管道模型如下图所示。在管道模型开始运行前,首先HTTP的请求被传到HttpRuntime类的一个实例中,然后这个实例对象检查请求并找到被接受的那个应用程序。接下来,管道模型就使用HttpApplicationFactory对象来创建一个HttpApplication对象来处理这个请求,一个HttpApplication可以包含一系列HTTP module对象。其中最重要的就是HttpModule和HttpHandler。
Asp.Net管道模型和页面生命周期

HttpModule,可以看做是一个拦截器,给我们在特定的事件处理请求的机会。HttpModule有很多应用,例如,我们要在每个请求的页面事件前加载Session数据,那么就用到SessionModule等等;asp.net4.0提供了路由机制也是建立在一个UrlRouteModule上面的,它在请求映射到具体程序前拦截,然后重新映射。MVC又是建立在路由机制的基础上的。
HttpHandler,可以看做一个处理器,它负责处理请求,输出数据。aspx,ashx或者说实现了IHttpHandler的都是HttpHandler。

19个标准事件:
Asp.Net管道模型和页面生命周期


Asp.Net六大对象:

  1. Application: Application对象是个应用程序级的对象,在所有用户间共享信息。维护整个应用程序的一组变量,这些变量可以由所有访问该应用程序和用户共享,并可以在Web应用程序运行期间持久地保持数据。Application对象没有内置的属性,可以自行创建属性
    Application对象除了基本的初始化事件,还有与start相对应的End事件,Applicaton_End事件,通常写程序关闭时要运行的代码。在程序运行出现错误的时候,提供了Application_Error事件来处理错误,可以写程序出错时要运行的代码。Application位于Global.asax文件中。
  2. Session: 该对象用于存储在多个页面之间调用特定用户的信息。Session类型的变量可以提供该用户在Web应用的所有页面中的共享数据。两个用户之间无法通过Session变量共享信息。而Application类型的变量可以实现站点多个用户之间在所有页面中共享信息。
  3. Server:Server对象提供对服务器上的方法和属性的访问。
  4. Request:该对象用于检索从浏览器向服务器发送的请求报文中的数据。
  5. Respones:该对象用于将数据从服务器发送回浏览器,接受服务器中返回的信息。
    Asp.Net管道模型和页面生命周期

6.ViewState: 本质上就是一个隐藏域。提供在一个页面多次请求之间保持状态信息的方法,仅在页面提交到服务器之前有效,保存页面的状态信息,如页面当前页码