More

    .Net Core Project 從零開始 — 相依性注入 (Dependency Injection)

    ASP.NET Core DI(Dependency injection) 在官方.Net Core 文件裡排在前面幾個介紹的算是.Net Core內建非常精華的功能,來說說這個DI架構的優點吧。

    先看一下先前寫的Controller在實體化Service 是怎麼使用的;

    在AuthController裡new MemberService被包在建構子裡在使用彈性上較低這樣等於變向AuthController依賴一定需要MemberService,但在使用Service上並沒有太大的問題只是使用DI動態注入會有更佳的彈性。

    Service lifetimes

    1.Transient: 每次運作碰到執行個體都會實體化一個暫時的個體;適合較輕量化的Service。

    2.Scoped:每次用戶的Request時,會把執行個體實體化,實體化後會在這次的Request結束前存在。

    3.Singleton:當呼叫到此執行個體時就會被實體化,實體化後會一直存在DI的容器中;可以使用在像是memory cache的Service。

    Step 1 – 將需要DI的Service 新增一個Interface; 以MemberService為範例:

    Step 2 – MemberService繼承IMemberService interface,要取用 DI 容器內的物件,只要在建構子加入相對的 Interface即可。

    Last Step – 在Startup.cs的ConfigureServices註冊相依注入

    Conclusion: 透過這次練習實作改變直接在Controller裡new Service的動作,此動作會直接將Service相依在Controller;利用 Dependency injection 動態注入,在Startup 將Service註冊在Interface上 ,在整體而言讓程式之間的耦合性降低了,之後在寫單元測試時也可以輕鬆的使用。

    .Net Core Project GitHub:Link

    下一遍 : .Net Core Project 從零開始 — Create Web API with Swagger

    Source : .Net Core Project 從零開始 —相依性注入 (Dependency Injection)

    參考文章

    Dependency injection in ASP.NET Core

    ASP.NET Core 2 系列 — 依賴注入 (Dependency Injection)

    Recent Articles

    spot_img

    Related Stories

    Stay on op - Ge the daily news in your inbox