前言:
借助依賴注入框架,我們可以輕松管理類直接的依賴,幫助我們在構建應用時遵循設計原則,確保代碼的可維護性和擴展性,
ASP.NET Core 的整個架構中,依賴注入框架提供了物件創建和生命周期管理的核心能力,各個組件相互協作,也是由依賴注入框架的能力實作的,
1:核心包
Microsoft.Extensions.DependecyInjection.Abstractions //抽象包
Microsoft.Extensions.DependecyInjection //具體實作包
用到了經典的設計模式,介面實作分離模式,
抽象包只包含介面的定義,實作包包含實作, 意味著我們的組件只需要依賴他的抽象介面,而不用依賴他的實作,
使用的時候注入他的具體實作即可,意味著我們可以替換具體的依賴注入框架實作,提高了程式的可擴展性,
2:核心型別
IServiceCollection:負責服務的注冊
ServiceDescriptor:每個服務注冊時的資訊
IServiceProvider:具體的容器,也是由ServiceCollection build 出來的
IServiceScope:容器的子容器的生命周期
3:生命周期
Singleton:單例: 每次請求都是一個物件
Scoped:作用域:指在我的Scope的生存周期內,或者是子容器的生存周期內,如果容器釋放掉,物件也會釋放,每個請求內是相同的,不同的請求是不同的
transient:瞬時:我們每一次從容器里獲取物件時都可以得到一個全新的物件
ps:[FromService]IMyservice myService 可以從容器里獲取物件
4:注冊方式
serviceProvider:工廠模式注冊 ,適用于所有模式,可以在內部實作復雜邏
TryAddSingleton: 嘗試注冊(如果服務已經注冊過了,就不在注冊) //介面相同則注冊不進去
TryAddEnumerable: 嘗試注冊 //實作類相同者注冊不進去
Replace:替換注冊:可以把之前注冊過的服務替換成我們新注冊的服務
RemoveAll<IOrderService>:洗掉注冊:移除所有IOrderService的實作
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/1610.html
標籤:ASP.NET
上一篇:.NET異步和多執行緒系列(四)- 多執行緒例外處理、執行緒取消、多執行緒的臨時變數問題、執行緒安全和鎖lock
