淺談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方法處理請求

 

示例:

①添加一個類,實現IHttpHandler接口,並實現接口內的IsRequest屬性和ProcessRequest()方法:(這里創建Handler類不是使用的“一般處理程序”,而是手動添加類創建Handler類)

 

 

 

      ProcessRequest()方法的參數HttpContext 表示當前請求的上下文,通過它的屬性可以直接訪問Application、Request、Server和Session

 

②在Web.config中configuration節點下添加如下內容:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM