深入理解ASP.NET 5的依賴注入


(此文章同時發表在本人微信公眾號“dotNET每日精華文章”,歡迎右邊二維碼來關注。)

題記:ASP.NET 5整個底層都架構於依賴注入機制之下,今天介紹的文章詳細介紹了內置依賴注入容器。

在ASP.NET之前的版本中,雖然各個框架(MVC、WEB API、SignalR)都支持依賴注入,但是由於框架是相互獨立的,所以使用依賴注入的方式都有所差異。Katana曾經期望通過OWIN來統一這些差異,直到ASP.NET 5中才得以實現。這得利於整個ASP.NET 5都是構建於依賴注入機制之下,且內置了一個依賴注入容器。在這篇文章《Dependency Injection In ASP.NET 5 – One Step Deeper》中,Emad Alashi就深入介紹了ASP.NET 5引入的依賴注入機制和默認容器的相關接口包括運行原理。

ASP.NET 5之所以能統一依賴注入的方式,是因為對依賴注入進行了一個更為高級的抽象,並提供了一系列接口來封裝這種抽象。

    • IServiceProvider:這是整個依賴注入機制的主接口,讓開發人員可以獲取到之前注冊到容器中的對象實例。其只提供一個方法:GetService(Type)。這個方法可以對應到Autofac中的container.Resolve<Service>()或者Ninject中的kernel.Get<Service>()。
    • IServiceScope:這是把IServiceProvider包裝為Scoped(限定范圍內)容器的接口。比如通過HttpContext.RequestServices屬性獲取到的IServiceProvider實例即是一個Scoped的。
    • IServiceScopeFactory:要創建IServiceScope的實例就需要依靠這個工廠接口。
    • ServiceLifetime:提供了對象作用域的枚舉(Singleton、Scoped和Transient)。
    • ServiceDescriptor:服務描述來構建一個容器的所有信息。

    文章后面還詳細介紹了依賴注入機制的具體使用方式和運行原理,涉及到:注冊服務、處理請求(獲得對象實例)。最后還以Autofac為例介紹了如何使用第三方的IoC框架。

    更細節的文字大家可以“閱讀原文”。

    原文鏈接:http://www.emadashi.com/2015/06/dependency-injection-in-asp-net-5-one-step-deeper/


    免責聲明!

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



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