ASP.NET 頁面物件模型 (轉)

worldblog發表於2007-08-16
ASP.NET 頁面物件模型 (轉)[@more@]

作者:Dino Esposito、Wlect:namespace prefix = o ns = "urn:schemas--com::office" />

時間:年8月

應用於:Microsoft

摘要

討論關於建立 頁的事件模型和轉化為HTML的各個過程的細節。ASP.NET HTTP 執行時管理著把請求URL轉換成一個頁面類的具體例項的管道,接下來把這些例項轉換成一般的HTML文字格式。本文對代表各個頁面生命週期的事件、怎麼控制頁面、開發人員怎麼幹預這些標準行為的執行過程進行了講解。

介紹

每當請求IIS容納的ASP.NET頁時,總是要把請求轉交給了ASP.NET HTTP 管道。HTTP管道是一組被控物件,這些物件按順序處理請求並且把這些請求轉換成一般HTML文字。HTTP管道的入口是HttpRuntime 類。ASP.NET的底層結構為每一個應用域 ( Appain )的工作程式建立了一個這個類(HttpRuntime)的例項(注意,一個工作程式只能支援一個正在執行的ASP.NET應用域)。

HttpRuntime 類從內部程式池中選擇一個 HttpApplcation 物件,並且在接收到請求的時候使它工作。Http應用管理程式的主要工作是尋找這樣的類使之能夠處理請求。例如:當請求一個.資源時,處理控制程式碼就是一個從Page繼承類的例項。請求資源的型別和相關處理控制程式碼的關係對映表被儲存在應用程式的裡。更確切的說,這個對映表就定義在machie.config裡的一節裡。但是,應用程式能在web.config裡對這個HTTP處理控制程式碼對映列表進行重定義。下面這行語句說明了定義.aspx資源請求的處理控制程式碼:

一個擴充套件可以和一個控制程式碼類聯絡起來,更一般說,是和一個控制程式碼工廠類相聯絡。在所有情況下,負責處理請求的HttpApplication物件得到一個從IHttpHandler介面具體實現的物件。如果是根據HTTP控制程式碼來處理資源和相關處理類的關係,則返回類是直接實現相關的介面的;如果資源是繫結到一個控制程式碼工廠的話,將必須經過另外一個階段:具體實現IHttpHandlerFactory介面的控制程式碼工廠類的GetHandler方法將返回一個基於IHttpHandler的物件。

Http執行時怎麼結束一個週期或關閉一個頁面請求的程式呢?IHttpHandler介面的ProcessRequest方法擁有這個功能。代表被請求頁面的物件的該方法,ASP.NET底層結構開啟一個程式來為產生輸出。

Page

一個頁面的HTTP處理控制程式碼的型別取決於URL。當這個URL被首次訪問,一個新的類將被構建並動態的編譯成一個程式集。一個分析aspx檔案的程式從aspx檔案中分離出這個類的程式碼。在預設情況下,這個類被加入到一個叫做asp的名字空間裡,並且把URL作為這個類的類名。例如,如果請求的URL是page.aspx,則這個類就是ASP.Page_aspx。這個類名,可以透過設定@Page預處理指令的ClassName屬性來修改。

HTTP控制程式碼的基礎類是Page類。這個類定義了一組最小方法和屬性集,這些方法和屬性被所有的頁面處理控制程式碼所共享。Page類具體實現了IHttpHandler介面。

在另外一種和上述相對應的情況中,實際處理頁面的控制程式碼的基礎類並不是Page類,而是一個別的類。當使用後程式碼時,這個情況就發生了。後程式碼是一種將或程式碼和頁面分離的技術。頁面程式碼是一組事件處理控制程式碼和其他一些方法的集合,這些方法定義了頁面的各種行為。這些程式碼可以以內聯形式用

相關文章