ASP.NET.Core --依賴注入

前言:設計模式

藉助依賴注入框架,咱們能夠輕鬆管理類直接的依賴,幫助咱們在構建應用時遵循設計原則,確保代碼的可維護性和擴展性。
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的實現框架

相關文章
相關標籤/搜索