动态网页的工作机制——Asp.net 运行机制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态网页的工作机制——Asp.net 运行机制相关的知识,希望对你有一定的参考价值。

一、Asp.net 运行机制概述

1.使用Asp.net 进行动态Web开发,编写好Web应用程序,即动态页面,并部署到Web服务器,如IIS中;

2.客户端在浏览器输入地址,请求相应的动态页面;

3.Web 服务器根据客户端的请求,对Web应用程序进行编译或解释,并生成html流,返回给客户端

4.客户端浏览器解释HTML流,并显示为Web页面

 

二、Asp.net 运行机制详解

 

技术分享

                                                                                              图1.1 ASP.NET 处理请求的内部过程

 

1.当请求发送到服务器IIS并被其接受后,IIS服务器会判断请求文件的类型:

   1)、如果是静态文件,如html、jpg、gif和txt等,IIS会根据目录找到文件发送给客户端;

   2)、如果是动态文件,如aspx页面,则IIS会通过aspnet_isapi.dll将请求转交给ASP.NET运行时环境,最终的处理结果会返回给IIS,然后发送到客户端。

2.ASP.NET运行时环境

    在Asp.net运行时环境中处理请求是通过一系列对象来完成的,包括HttpApplicationHttpModuleHttpHandler

 1).HttpApplication:处理收到的请求,HttpApplication对象每次只能处理一个请求,这样其成员变量才可用于存储针对每个请求的数据,如Request对象和Response对象;

 2).HttpModule:负责所有请求的初始化和请求收尾工作,即它可以在一次HTTP请求传递到最终的“请求处理中心”(HttpHandler)进行处理之前做一些额外工作,或者在某些情况下

                           终止满足一些条件的HTTP请求,从而起到一个过滤的作用;

    HttpModule应用实例: 

    ①添加一个类,实现IHttpModule接口,并实现该接口中的Dispose()方法和Init()方法      

 public class TestHttpModule:IHttpModule
 {
    public TestHttpModule()
    {
    //
    // TODO: Add constructor logic here
    //
     }

     //Dispose执行释放资源的工作

     public void Dispose()
     {
          throw new NotImplementedException();
      }

      //Init执行初始化的工作

      public void Init(HttpApplication context)
      {
         context.BeginRequest += context_BeginRequest;
         context.EndRequest += context_EndRequest;
     }

     private void context_EndRequest(object sender, EventArgs e)
     {
         HttpApplication application = sender as HttpApplication;
         application.Response.Write("<p>开始处理请求!</p>");
      }

      private void context_BeginRequest(object sender, EventArgs e)
      {
           HttpApplication application = sender as HttpApplication;
           application.Response.Write("<p>结束处理请求!</p>");
       }
}

②在Web.config中的<configuration>节点下添加如下内容

<system.webServer>

      <modules>

             <add name="test" type="TestHttpModule" />  //name自己任意赋值,type类型等于自己实现IHttpModule接口的class名称

      </modules>

</system.webServer>

 

   3).HttpHandler:HTTP请求的最终处理中心,负责所有请求的具体工作(请求由该对象的ProcessRequest方法处理,如图1.2) ;

     技术分享

                                                                        图1.2  HttpHandler对象的ProcessRequest方法处理请求

 

以上是关于动态网页的工作机制——Asp.net 运行机制的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Asp.net 运行机制

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

IIS 内部运行机制

ASP.NET运行机制原理

asp.net运行原理及机制

HTTP协议/IIS 原理及ASP.NET运行机制浅析图解