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

MVC 系列(4):Http Pipeline 詳細分析(上)

     編輯:關於ASP.NET

承上章,HttpApplicationFactory.GetApplicationInstance 取得實例並呼叫 BeginProcessRequest 進入 Pipeline。GetApplicationInstance 核心邏輯:

internal static IHttpHandler GetApplicationInstance(HttpContext context) {
    if (_customApplication != null) return _customApplication;
    if (context.Request.IsDebuggingRequest) return new HttpDebugHandler();
    _theApplicationFactory.EnsureInited();
    _theApplicationFactory.EnsureAppStartCalled(context);
    return _theApplicationFactory.GetNormalApplicationInstance(context);
}

_theApplicationFactory 為單例。三行粗體代碼分別:

  1. EnsureInited:雙重檢查鎖定呼叫 Init(),解析 global.asax 路徑並編譯(_appFilename = GetApplicationFile(); CompileApplication();)。
  2. EnsureAppStartCalled:最終呼叫 FireApplicationOnStart,建立特殊 HttpApplication 實例觸發 Application_Start 事件,執行完立即回收(僅執行一次)。
  3. GetNormalApplicationInstance:從閒置池(_freeList)取得或建立新 HttpApplication,呼叫 InitInternal 完成初始化(掛載模組、事件等),回傳實例處理請求。

此流程揭示 ASP.NET 如何透過應用程式工廠管理 HttpApplication 生命週期,支援池化重用與啟動事件分離執行。

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