.netcore生命週期、消息管道

.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.UseRouting 和 app.UseEndpoints 方法來配置路由。
    • 路由中間件負責將傳入的 HTTP 請求映射到相應的控制器操作或頁面。
  7. 啓動應用程序:
    • 一旦主機和應用程序被配置好,應用程序就開始監聽傳入的請求。
    • 對於 Web 應用程序,這通常意味着啓動一個 HTTP 服務器(如 Kestrel)來監聽指定的端口。
  8. 處理請求:
    • 當請求到達時,它們會經過中間件管道,每個中間件都可以對請求進行處理或修改。
    • 最終,請求會到達相應的控制器操作或頁面,並生成響應。
  9. 發送響應:
    • 控制器操作或頁面生成響應後,它會通過中間件管道返回給客戶端。
    • 中間件可以在響應返回給客戶端之前對響應進行最後的處理或修改。

這個過程是一個高度簡化的概述,實際的初始化過程可能涉及更多的細節和配置步驟。但是,上述步驟提供了對 .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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章