首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 執行階段架構淺析:HttpRuntime、BuildManager 與頁面編譯模型

     編輯:關於ASP.NET

本文基於 ASP.NET 2.0 原始碼,剖析請求處理流程與頁面編譯模型,協助開發者理解核心運作機制。建議搭配 Reflector 等反編譯工具邊看源碼邊閱讀。

核心類別與職責

類別命名空間核心職責
HttpRuntimeSystem.Web應用程式啟動、請求佇列管理、快取控制
HttpApplicationFactorySystem.WebHttpApplication 實例池管理
HttpApplicationSystem.Web請求管線事件、模組管理、處理常式對應
BuildManagerSystem.Web.Compilation動態編譯協調、BuildProvider 管理
ApplicationBuildProviderSystem.Web.Compilation應用程式層級建構(Global.asax、資源檔等)
BuildProvidersCompilerSystem.Web.Compilation編譯器封裝、組件產生
PageHandlerFactorySystem.Web.UI.aspx 頁面處理常式工廠

請求處理簡要流程

  1. IIS 接收請求 → aspnet_isapi.dll → 傳遞至 ASP.NET 執行階段
  2. HttpRuntime.ProcessRequest 建立 HttpContext
  3. HttpApplicationFactory 取得/建立 HttpApplication 實例
  4. 應用程式啟動事件(Application_Start、模組 Init)
  5. 請求管線事件(BeginRequest → AuthenticateRequest → AuthorizeRequest → ... → PostRequestHandlerExecute → EndRequest)
  6. PageHandlerFactory.GetHandler 解析 .aspx 虛擬路徑
  7. BuildManager 協調編譯:
     • 檢查快取組件是否存在/有效
     • 否則透過 BuildProvider 解析原始碼 → 產生程式碼 DOM → 編譯為組件
     • PageHandlerFactory 實例化頁面類別
  8. 頁面生命週期執行(Init → Load → Render → Unload)
  9. 回應輸出至客戶端

ASP.NET 2.0 請求處理流程圖

圖示:請求處理簡要流程圖

頁面編譯模型演進

ASP.NET 2.0 引入 動態編譯 與 預先編譯 兩種模式:

  • 動態編譯:首次請求時編譯,支援 .aspx、.ascx、.master、.skin、.cs/.vb 程式碼檔、Web Services 等所有檔案類型異動觸發重編譯,無需手動 Build。
  • 預先編譯:使用 aspnet_compiler.exe 部署前編譯整站,優點:首次請求無延遲、原始碼保護(含 .aspx 標記)、編譯錯誤提前發現。

理解執行階段架構有助於排查效能瓶頸、部署策略選擇與擴充管線行為。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved