我是DI和IoC模式的新手。我正在研究一個新項目,並希望最大限度地減少我的對象。我的課程在解決方案中分爲幾個項目。所以我下載了NInject,並在應用程序啓動(Main函數或Global.asax)中讀取應創建綁定的地方。我不明白的一件事是,在那種情況下,我將不得不引用那些包含類的程序集來創建綁定,這意味着這些類與我創建綁定的對象結合在一起。是對的嗎?這是否意味着使用MEF是一個更好的主意?任何人都可以解釋IoC的工作原理以及爲什麼使用它是個好主意? 謝謝關於DI和IoC容器的問題
2
A
回答
2
控制反轉不是沒有引用程序集,而是關於在邏輯和相關服務之間創建契約。它通過在使用服務時抽象出具體的實例化來促進可測試性和可重用性。
例如,這允許您傳入不同的數據服務,將數據保存到內存表中而不是數據庫,這意味着您不會在單元測試期間將數據保存到數據庫。執行工作的函數並不關心傳入的內容,因爲無論它是什麼,它都實現了一個通用接口,您可以在合理的假設下執行它們的功能。
有很多很好的資源可用於瞭解有關IOC/DI模式的更多信息。這裏有一對夫婦:
0
在最簡單的方法,你的綁定(容器配置)需要知道的所有引用的類,它是在大多數情況下足夠了。
如果它不是你的情況,一些IoC容器可以有多個綁定/配置。在StructureMap中,綁定名爲Registry
,您可以指定包含多個註冊表,甚至可以掃描指定目錄中的庫以動態包含所有註冊表。我記得NInject也提供了從多個地方配置內核的可能性。
在這裏我相信使用MEF並不會更好。您也必須共享項目之間的通用界面。而MEF是爲了運行時的可組合性,當你不能在設計時組成系統的時候,如果我理解正確,這裏就不是這種情況。
相關問題
- 1. 關於IoC的問題
- 2. 關於IoC的問題
- 3. Winforms和IoC/DI
- 4. 支持Compact Framework的IoC/DI容器
- 5. 與DI/IoC容器保持聯繫
- 6. 將MEF插件導入DI/IOC容器
- 7. DI/IoC容器性能基準比較?
- 8. 爲什麼MEF不是DI/IoC容器?
- 9. IoC和DI的功能
- 10. DI和IOC的例子
- 11. DI/IoC的MVC大會參考的問題和抽象
- 12. IOC/DI容器和子窗口創建困境
- 13. 有關接口和DI的問題?
- 14. 關於DI和SRP
- 15. 解決 「機器人腿」 問題與Spring IOC(DI)
- 16. INotifyPropertyChanged:AoP或IoC/DI?
- 17. 關於DI的問題以及如何解決一些問題
- 18. 用於.NET Framework 2.0的DI/IOC
- 19. 的IoC DI用於.NET核心身份
- 20. 關於SOLID原則,使用容器和Unity的DI:如何管理容器中的DI映射?
- 21. NServiceBus網關IOC和MessageHandler問題
- 22. DI容器和控制器
- 23. Windows移動應用程序中的IoC/DI容器
- 24. IoC容器可訪問性
- 25. IoC和DI - 架構和實現示例
- 26. DI和IOC在spring mvc中的實現
- 27. 的IoC/DI在.NET/Java的
- 28. 驗證我瞭解IoC,Ioc容器,DI和服務定位器之間的區別
- 29. ServiceStack IoC DI Design解決單獨項目中的問題
- 30. 你如何處理IoC和DI的「深層」依賴關係?