ASP.NET 頁面對象模型
發表于:2007-09-07來源:作者:點擊數:
標簽:
介紹 每當請求IIS容納的ASP.NET頁時,總是要把請求轉交給了ASP.NET HTTP 管道。HTTP管道是一組被控對象,這些對象按順序處理請求并且把這些請求轉換成一般HTML文本。HTTP管道的入口是HttpRuntime 類。ASP.NET的底層結構為每一個應用程序域 ( AppDomain )的
介紹
每當請求IIS容納的ASP.NET頁時,總是要把請求轉交給了ASP.NET HTTP 管道。HTTP管道是一組被控對象,這些對象按順序處理請求并且把這些請求轉換成一般HTML文本。HTTP管道的入口是HttpRuntime 類。ASP.NET的底層結構為每一個應用程序域 ( AppDomain )的工作進程建立了一個這個類(HttpRuntime)的實例(注意,一個工作進程只能支持一個正在運行的ASP.NET應用域)。
HttpRuntime 類從內部程序池中選擇一個 HttpApplcation 對象,并且在接收到請求的時候使它工作。Http應用管理程序的主要工作是尋找這樣的類使之能夠處理請求。例如:當請求一個.aspx資源時,處理句柄就是一個從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類,而是一個別的類。當使用后代碼模式時,這個情況就發生了。后代碼是一種將C#或VB.NET代碼和頁面分離的技術。頁面代碼是一組事件處理句柄和其他一些方法的集合,這些方法定義了頁面的各種行為。這些代碼可以以內聯形式用
|
原文轉自:http://www.anti-gravitydesign.com