ASP.NET頁面請求處理介紹

來源:互聯網
上載者:User

HttpRuntime類

頁面請求先給可以處理原始HTTP請求的對象處理,最後在管線的終端產生要發給瀏覽器的標記。HttpRuntime類是改管道的進入點。
對每一個請求,ASP.NET會建立HttpRuntime對象,並調用ProcessRequest來啟用該HTTP管道。HttpRuntime對象會在建立時對許多輔助處理頁面請求的內部對象進行初始化。ProcessRequest方法被調用後,會建立HttpContext類執行個體,他封裝了所有的HTTP提有的資訊,我們一般在代碼中使用就是這個HttpContext對象,他就是由HttpRuntime對象建立的。HttpRuntime對象使用請求資訊鎖定能夠處理請求的Web應用程式物件。通過URL中的虛擬路徑,便可以定位Web應用程式,但是真正鎖定能處理請求的Web應用程式的對象是HttpApplicationFactory。會返回能處理請求的有效對象。HttpRuntime對象會先產生HttpContext對象,然後把HttpContext對象傳給HttpApplicationFactory對象,委託她確定能處理請求的應用程式。在應用程式的生命週期中,HttpApplicationFactory對象維護著很多HttpApplication對象,該對象用於處理請求。當程式工廠對象被調用後,它會驗證請求的目標虛擬資料夾是否存在,如果應用程式已運行,改工廠則從可用的對象池中取一個HttpApplication對象,然後把請求對象委託給它,如果沒有就建立它。如果虛擬目錄不曾被調用,則在新的AppDomain中建立一個HttpApplication對象,這樣,如果應用程式檔案global.asax存在,HttpApplication對象就需要對它進行編譯,該過程相當於啟動應用程式。HttpApplication對象用於處理頁面請求,每一次處理一個(多個對象用於處理並發請求)。

HttpApplication類

HttpApplication是一個基類,代表著運行中的ASP.NET應用程式。
也可以是HttpApplication的衍生類別代表著運行中ASP.NET應用程式。
如果global.asax存在,會建立動態產生的應用程式類的原始碼,
如果global.asax可用,應用程式類會建立,否則會使用基類HttpApplication。
HttpApplication類或衍生類別的執行個體管理請求的整個生命週期,是有請求處理完畢後,該執行個體會被釋放,才會可能處理其他的請求。
HttpApplication維護著一系列Http模組對象,這些對象可以請求的內容進行篩選,修改。在請求過程中,可能隨時會調用登入的模組。HttpApplication對象能判斷請求資源是什麼類型(頁面、控制項等),然後使用通過處理常式工廠鎖定可以處理請求的處理常式對象。處理常式工廠對象是實現IHttpHandlerFactory介面的類執行個體,負責鎖定可以處理請求的對象——HTTP處理常式。一個ASP.NET頁面是一個處理常式對象(實現了IHttpHandler介面的類執行個體)。

頁面工廠

HttpApplication類會確定要處理的請求的物件模型,並委託該類型相關的處理常式工廠建立其新的執行個體。如果請求是一個頁面請求,那會怎樣?
一旦HttpApplication對象掌管了請求,就必須選擇一個合適的處理常式,對於面向頁面的請求,對用的工廠名為:PageHandlerFactory。為找到合適的處理常式,HttpApplication會讀取設定檔<HttpHandlers>區段的資訊,是包含一個主要的登入處理常式。請求過來之後,頁面處理工廠會建立請求頁面的對象執行個體。頁面對象繼承於Page類,該類實現了IHttpHandler介面,頁面對象會被返回應用程式工廠,隨後會被回傳給HttpRuntime對象,最後的步驟由ASP.NET運行庫完成。ASP.NET運行庫會調用IHttpHandler的頁面對象的ProcessRequest方法,這會使頁面執行使用者定義的代碼,並為瀏覽器返回HTML標記。

我在網站找了一張整個管道的流程圖,比較貼近:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.