.netcore生命週期、訊息管道

DaiWK發表於2024-04-02

.NET Core 的初始化過程涉及多個步驟,這些步驟從應用程式的啟動開始,一直到應用程式準備好處理請求。下面是一個簡化的概述,描述了 .NET Core 應用程式(特別是 ASP.NET Core 應用程式)的初始化過程:

  1. 啟動主機(Host):
    • .NET Core 應用程式透過 CreateHostBuilder 方法(在 Program.cs 檔案中)來建立和配置主機。
    • 主機負責應用程式的生命週期管理,包括啟動、執行和關閉應用程式。
    • 對於 ASP.NET Core 應用程式,這通常是一個 Web 主機(WebHost)。
  2. 配置主機:
    • CreateHostBuilder 方法中,會呼叫 ConfigureWebHostDefaults 或類似的方法來配置主機的預設設定。
    • 可以透過 ConfigureAppConfiguration 方法來新增或覆蓋配置源,如 appsettings.json 檔案、環境變數等。
  3. 構建依賴注入容器:
    • 在主機構建過程中,會建立依賴注入(DI)容器。這是 ASP.NET Core 的核心特性之一,用於實現控制反轉(IoC)。
    • 透過在 Startup 類中註冊服務(在 ConfigureServices 方法中),可以將服務新增到 DI 容器中。
  4. 執行 Startup 類:
    • Startup 類是 ASP.NET Core 應用程式的關鍵部分,它包含配置應用程式請求處理管道所需的邏輯。
    • ConfigureServices 方法用於配置應用程式的服務,這些服務稍後將被注入到控制器或其他類中。
    • Configure 方法用於設定應用程式的請求處理管道,透過新增中介軟體來定義請求的處理流程。
  5. 中介軟體管道配置:
    • Configure 方法中,透過呼叫 app.Use* 方法來新增中介軟體到請求處理管道。
    • 中介軟體按照新增的順序執行,每個中介軟體都可以對請求進行處理,然後決定是否將請求傳遞給管道中的下一個中介軟體。
  6. 路由配置:
    • 對於 ASP.NET Core MVC 或 Razor Pages 應用程式,路由是中介軟體管道中的關鍵部分。
    • 透過在 Startup 類的 Configure 方法中呼叫 app.UseRoutingapp.UseEndpoints 方法來配置路由。
    • 路由中介軟體負責將傳入的 HTTP 請求對映到相應的控制器操作或頁面。
  7. 啟動應用程式:
    • 一旦主機和應用程式被配置好,應用程式就開始監聽傳入的請求。
    • 對於 Web 應用程式,這通常意味著啟動一個 HTTP 伺服器(如 Kestrel)來監聽指定的埠。
  8. 處理請求:
    • 當請求到達時,它們會經過中介軟體管道,每個中介軟體都可以對請求進行處理或修改。
    • 最終,請求會到達相應的控制器操作或頁面,並生成響應。
  9. 傳送響應:
    • 控制器操作或頁面生成響應後,它會透過中介軟體管道返回給客戶端。
    • 中介軟體可以在響應返回給客戶端之前對響應進行最後的處理或修改。

這個過程是一個高度簡化的概述,實際的初始化過程可能涉及更多的細節和配置步驟。但是,上述步驟提供了對 .NET Core 應用程式初始化過程的基本理解。

如果訊息管道配置了中介軟體A、中介軟體B,執行順序為

request --> 中介軟體A處理邏輯 --> 中介軟體B處理邏輯 --> 中介軟體B結束邏輯 --> 中介軟體A結束邏輯 --> response