.NET Core DI簡單介紹


依賴注入的基礎

我們都知道DI,,他是一種開發模式。他是將服務可被應用程序任何位置的代碼使用,當某個代碼組件(如一個類)需要引用某些外部代碼(一個服務)時。都有兩種選擇

1:直接在調用代碼種創建服務組件的一個新實例。

2:收到該服務的一個有效實例。

比如一個操作是記錄操作記錄。那么看以下代碼。業務邏輯和記錄操作緊密耦合

            
public void  Home()
        {
            var log=new Logger();
            log.Log("Waring");
         }

如果該類移動到其他位置,那么必須也要移動所有引用和依賴,如果有數據庫操作。那么使用的地方都要有數據庫連接,

如果解耦

 private readonly ILogger _logger;

        public HomeController(ILogger  logger)
        {
            _logger = logger;
        }
     public void  Home()
        {
            var log=new Logger();
            log.Log("Waring");
         }

將其抽象為ILogger 接口,通過構造函數注入。

當然如果過度使用依賴注入,那么會有這樣。依賴的有其他的依賴。以此類推。

可以使用DI框架。同時也叫IOC框架

var logger=SomeFrameworkIoC.Resolve(typeof(ILogger));

Service Locator模式

松耦合調用外部依賴,並非只有依賴注入。還有Service Locator。它能夠創建與指定抽象類型匹配的實例。DI和它的關鍵區別在於,DI要求相應地設計外圍代碼;構造方法與其他方法的簽名可能會發生變化。而它保守。  可讀性差一點。當龐大的現有代碼庫種重構依賴時,它是一個理想選擇。

如下:

public void Perform()
{
   var logger=HttpContext.RequestService.GetService<ILogger>();
  
}

這是RequestService對象在HTTP上下文中扮演了Service Locator角色。

當然依賴注入的生命周期。大家想必都有所了解。我這里簡單說一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM