.NET Core 的初始化過程涉及多個步驟,這些步驟從應用程式的啟動開始,一直到應用程式準備好處理請求。下面是一個簡化的概述,描述了 .NET Core 應用程式(特別是 ASP.NET Core 應用程式)的初始化過程:
- 啟動主機(Host):
- .NET Core 應用程式透過
CreateHostBuilder
方法(在 Program.cs 檔案中)來建立和配置主機。 - 主機負責應用程式的生命週期管理,包括啟動、執行和關閉應用程式。
- 對於 ASP.NET Core 應用程式,這通常是一個 Web 主機(WebHost)。
- .NET Core 應用程式透過
- 配置主機:
- 在
CreateHostBuilder
方法中,會呼叫ConfigureWebHostDefaults
或類似的方法來配置主機的預設設定。 - 可以透過
ConfigureAppConfiguration
方法來新增或覆蓋配置源,如 appsettings.json 檔案、環境變數等。
- 在
- 構建依賴注入容器:
- 在主機構建過程中,會建立依賴注入(DI)容器。這是 ASP.NET Core 的核心特性之一,用於實現控制反轉(IoC)。
- 透過在
Startup
類中註冊服務(在ConfigureServices
方法中),可以將服務新增到 DI 容器中。
- 執行 Startup 類:
Startup
類是 ASP.NET Core 應用程式的關鍵部分,它包含配置應用程式請求處理管道所需的邏輯。ConfigureServices
方法用於配置應用程式的服務,這些服務稍後將被注入到控制器或其他類中。Configure
方法用於設定應用程式的請求處理管道,透過新增中介軟體來定義請求的處理流程。
- 中介軟體管道配置:
- 在
Configure
方法中,透過呼叫app.Use*
方法來新增中介軟體到請求處理管道。 - 中介軟體按照新增的順序執行,每個中介軟體都可以對請求進行處理,然後決定是否將請求傳遞給管道中的下一個中介軟體。
- 在
- 路由配置:
- 對於 ASP.NET Core MVC 或 Razor Pages 應用程式,路由是中介軟體管道中的關鍵部分。
- 透過在
Startup
類的Configure
方法中呼叫app.UseRouting
和app.UseEndpoints
方法來配置路由。 - 路由中介軟體負責將傳入的 HTTP 請求對映到相應的控制器操作或頁面。
- 啟動應用程式:
- 一旦主機和應用程式被配置好,應用程式就開始監聽傳入的請求。
- 對於 Web 應用程式,這通常意味著啟動一個 HTTP 伺服器(如 Kestrel)來監聽指定的埠。
- 處理請求:
- 當請求到達時,它們會經過中介軟體管道,每個中介軟體都可以對請求進行處理或修改。
- 最終,請求會到達相應的控制器操作或頁面,並生成響應。
- 傳送響應:
- 控制器操作或頁面生成響應後,它會透過中介軟體管道返回給客戶端。
- 中介軟體可以在響應返回給客戶端之前對響應進行最後的處理或修改。
這個過程是一個高度簡化的概述,實際的初始化過程可能涉及更多的細節和配置步驟。但是,上述步驟提供了對 .NET Core 應用程式初始化過程的基本理解。
如果訊息管道配置了中介軟體A、中介軟體B,執行順序為
request --> 中介軟體A處理邏輯 --> 中介軟體B處理邏輯 --> 中介軟體B結束邏輯 --> 中介軟體A結束邏輯 --> response