.NET Core DI簡單介紹

依賴注入的基礎數據庫

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

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

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

好比一個操做是記錄操做記錄。那麼看如下代碼。業務邏輯和記錄操做緊密耦合設計

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

若是該類移動到其餘位置,那麼必須也要移動全部引用和依賴,若是有數據庫操做。那麼使用的地方都要有數據庫鏈接,code

若是解耦orm

 private readonly ILogger _logger;

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

將其抽象爲ILogger 接口,經過構造函數注入。對象

固然若是過分使用依賴注入,那麼會有這樣。依賴的有其餘的依賴。以此類推。blog

可使用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角色。

固然依賴注入的生命週期。你們想必都有所瞭解。我這裏簡單說一下

相關文章
相關標籤/搜索