一點一點學ASP.NET之基礎概念——HTTP運行期與頁面執行模型

來源:互聯網
上載者:User

HTTP運行期與頁面執行模型

—— 一點一點學ASP.NET

文野:2006年8月8日星期二

 

HTTP運行期

HTTP運行期處理用戶端應用程式(例如Web瀏覽器)進入的一個Web請求,通過處理它的應用程式的適當組件路由請求,然後產生響應並發回提出請求的用戶端應用程式。

進入的HTTP Web請求最先由IIS Web伺服器接收到,它在此請求基於ASP.NET登入處理的副檔名傳送到ASP.NET ISAPI上。

HTTP運行期首先建立一個HttpContext對象的執行個體,它包含了當前正在處理的請求資訊,接著建立在處理邏輯中涉及到的所有其他組件都可以使用的內容物件。HttpContext執行個體提供了對請求對象(HttpRequest類的執行個體)和響應對象(HttpResponse類的執行個體)的訪問。

HTTP運行期整合由稱為HTTP模組(HTTP Module)的組件構成的處理管線,用於執行請求預先處理動作(如:快取的查詢和授權)和後處理動作(如:更新調整緩衝)。這些組件實現IHttpModule介面。在管線中,每個模組處理不同的全域應用程式層次和特定請求事件來執行其邏輯。

HTTP運行期基於請求的URL還選擇一個HTTP處理常式(實現IHttpHandler介面的組件)或HTTP處理常式工廠(實現IHttpHandlerFactory介面的組件)來完成引入請求的實際處理過程。處理常式用HttpContext對象來收集請求資訊、並寫出響應的結果。



圖1:ASP.NET Web 應用程式中的請求處理過程

 

一個HTTP請求的處理過程

當一個HTTP請求被送入HttpRuntime之後,這個HTTP請求會繼續被送入到一個被稱為HttpApplicationFactory的容器中。而這個視窗會給出一個HttpApplication執行個體來處理傳遞進來的HTTP請求,而後這個HTTP請求會依次進入如下幾個容器中:

HttpModule ——> HttpHandler Factory ——> HttpHandler

當系統內部的HttpHandler的ProcessResquest的方法處理完畢之後,整個Http Request就被處理完成了,用戶端也就得到相應的結果了。

 

一個完整的HTTP請求在ASP.NET Framework的處理過程如下:

HttpRequest ——> inetinfo.exe ——> ASPNET_ISAPI.dll ——> Http Pipeline ——> ASPNET_WP.exe ——> HttpRuntime ——> HttpApplication Factory  ——> HttpApplication  ——> HttpModule ——> HttpHandler Factory  ——> HttpHandler  ——> HttpHandler.ProcessRequest()

 

頁面執行模型

頁面執行模型由頁面HTTP處理常式工廠開始,它註冊HTTP運行期以為所有.aspx檔案處理請求。頁面處理常式工廠負責建立一個Page對象的執行個體,這是將最終處理請求所產生響應結果的HTTP處理常式。

首先頁面處理常式工廠嘗試在與請求的.aspx檔案相關的.NET快取內尋找以前編譯過的頁面類。當尋找失敗時,就像第一次請求一樣,處理常式工廠將讀取和解析檔案,並建立一棵解析樹(parse tree)。解析樹類似於控制項樹,但是並不包含控制項,解析樹包含稱為控制項產生器(control builder)的對象執行個體。控制項產生器包含了在解析過程期間收集的相關控制項資訊。然後通過Page指令中的Language attribute,用與頁面相關的語言把解析樹轉變為代碼。然後,頁面處理常式工廠調用適當的編譯器,動態地編譯從Page中得到的類,頁面處理常式工廠還將建立的類放置到ASP.NET調整緩衝中,並且把快取記錄和檔案相關性關聯起來。檔案相關性監視.aspx檔案做出的變化,並保證任何變化都自動地使快取記錄無效,在下次請求時這些記錄將再次解析修改過的檔案。


圖2:頁面如何處理請求

 

參考資料
    《ASP.NET伺服器控制項與組件開發》
    《ASP.NET深入解析》

下一篇:一點一點學ASP.NET之基礎概念——HttpModule

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.