前言
Asp.Net Core的程式生命週期和DI生命週期,有很多小細節需要注意。像是DI的生命週期選擇和Program和Startup的程式執行順序…這邊把相關的資訊整理一下,來連貫整個過程!
執行流程
- Main
- .NET Core 把 Web 及 Console 專案都變成一樣的啟動方式,預設從 Program.cs 的 Main() 做為程式進入點
- CreateHostBuilder
- 可以在 Host 產生之前設定一些前置準備動作,當 Host 建立完成時,就可以使用已準備好的物件等
- Host 載入設定檔
- Startup - ConfigureServices
- 將相依的服務註冊到DI容器
- 設定適合的DI生命週期
- Singleton
整個Process只建立一個Instance,任何時候都共用它
- Scoped
在網頁Request處理過程(指接到瀏覽器請求到回傳結果前的執行期間)共用一個Instance
- Transient
每次Request時就建立一個新的,永不共用
- Singleton
- Startup - Configure
- 參數的實例都是從 WebHost 注入進來,可依需求增減需要的參數
- 設定中介軟體(Middlewares)的流程
- Build
- 當前置準備都設定完成後,就可以呼叫此方法實例化 Host,同時也會實例化 WebHost
- Run
- 啟動 Host
流程圖
心得
一開始對asp .net core的生命週期還不太了解,製作了執行的流程圖後,感覺清楚多了! 如果有遺漏的部分後續會再調整~