IServiceProvider
基本上只是任何IOC容器的通用接口,還是用於特定框架?我正在滾動我自己的輕量IOC容器,我想知道我是否應該實施它。是否還有其他接口應該實現?我對MEF或Unity都不感興趣。我已經廣泛地使用了它們,並且它們並不適合我當前的項目。什麼框架使用`IServiceProvider`?
回答
IServiceProvider
是進口的(或者是持有以上)COM預定於你的人詢問了服務對象的情況下被用於私人的功能界面。術語「服務」在這裏應用得相當寬鬆,它最初意味着任何COM對象都可以根據給定的GUID返回。
IServiceProvider @ MSDN (.NET reference)
IServiceProviderImpl Class @ MSDN (C++ ATL reference)
在.NET中,你不需要實現它,除非你有專門支持它的客戶,並且在很多情況下,你不會需要添加間接的另一個水平這是暗示使用IServiceProvider
。此外,您可以設計自己的方案來共享通用對象或實現基於IoC /依賴注入的其他使用模式,這些模式根據您的需求而更靈活或更嚴格。
IServiceProvider
的一個很好的歷史背景是IE瀏覽器插件規範。在此,它用於允許插件組件在上下文中使用瀏覽器主機功能。在COM環境中,此接口非常有用,因爲它隱藏了實例化的細節,還可以用作對象構建和利用策略的一部分,以避免引用循環。
我認爲這是一個非常通用的界面,所以你可以使用它。它幾乎不應該在框架類庫中。對於一個特定用途,WCF數據服務團隊的Alex D. James有一個關於它的博客。
我不認爲這有什麼關係IoC容器。我已經很多地使用了Unity和Autofac,並且從來沒有見過它用過。至於滾動你自己,我建議您在更標準的通用的方式定義自己的容器接口:
public interface IContainer
{
T Resolve<T>();
}
,是與某種變化相當標準,但你也可以只使用的IServiceProvider如果符合您的需求。
並且在那個筆記上,除非這只是一個學術練習,否則您可能需要閱讀「依賴注入」。馬克塞曼涵蓋了所有的容器和相當多的理論和實踐。那就是,我強烈推薦它。
https://www.amazon.com/Dependency-Injection-NET-Mark-Seemann/
新(如.NET 4)運行時緩存API也使用它:http://msdn.microsoft.com/en-us/library/system.runtime.caching.objectcache.host.aspx。
還有Visual Studio設計師。
ASP.NET 5在「自託管」模式下使用IServiceProvider
,即在控制檯應用程序或服務中託管ASP.NET應用程序和運行時。
(Microsoft.Framework.Runtime.Common.DependencyInjection.ServiceProvider
類型的對象 - 實現IServiceProvider
)被傳遞給您的控制檯應用程序構造函數。)
因此,如果您想在ASP.NET 5中使用不同的IoC容器,則可能需要實現此接口。或者將其他IoC容器包裝在實現此接口的類中。
ASP.NET核心(以前的ASP.NET 5)總是使用'IServiceProvider',不僅在「自我託管」時。 – John
- 1. 使用什麼框架
- 2. 是什麼IProvideValueTarget和IServiceProvider的區別?
- 3. 什麼是使用實體框架6
- 4. 爲什麼要使用IoC框架
- 5. 什麼Web框架使用「JavaScript:__ doPostBack()」
- 6. 爲什麼Spring JMS框架使用MessageCreator?
- 7. 爲什麼我要使用PHP框架
- 8. 使用SproutCore框架有什麼優勢?
- 9. 使用什麼部署框架?
- 10. 在WSO2 Emm中使用什麼框架?
- 11. MS Ajax框架使用location.hash作什麼?
- 12. 什麼POOP框架
- 13. 什麼是SEAM框架,我爲什麼要使用它?
- 14. 什麼是實體框架?我們爲什麼使用它?
- 15. 什麼是.NET框架
- 16. 什麼是「優秀」框架?
- 17. 什麼是M2M Mihini框架?
- 18. 什麼是PastryKit框架?
- 19. 什麼是onDrawFrame框架?
- 20. 什麼是全棧框架?
- 21. 什麼是python web框架
- 22. 框架是什麼意思?
- 23. 什麼是執行框架?
- 24. 什麼是實體框架
- 25. 什麼是MVVM框架?
- 26. trac基於什麼框架?
- 27. 什麼是HTML5框架?
- 28. 這是什麼web框架?
- 29. 爲什麼實體框架?
- 30. 什麼是軟件框架?
不錯!謝謝我會的。 – Jordan