.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 應用程序初始化過程的基本理解。
netcore初始化啓動:CreateHostBuilder
創建web服務器、配置web服務器ip:post----->IOC容器註冊服務---->配置消息管道(內置中間件(鑑權、路由、靜態文件處理、跨域)、第三方中間件(swagger、限流)、自定義中間件(全局異常日誌))------>啓動web服務器
如果消息管道配置了中間件A、中間件B,一個請求如何處理
request-->反向代理服務器(IIS、Nginx) 轉發-->內置web服務器Kestrel-->消息管道處理( 中間件A處理邏輯 --> 中間件B處理邏輯 --->業務處理(過濾器、控制器、業務處理)--> 中間件B結束邏輯 --> 中間件A結束邏輯) -->-反向代理服務器(IIS、Nginx)-> response