讀了一些東西,如在此之後:http://mikehadlow.blogspot.com/2008/09/managed-extensibility-framework-why.html使用MEF作爲一個IoC
據我瞭解,MEF有一些featcures,我不會在一個IoC發現,和MEF有一些國際奧委會的東西,是probaboly沒有先進就像其他一些IoC系統可以提供的一樣。
我需要的東西MEF。我是否還需要一個IoC框架,或者我會對MEF的工作狀況感到滿意嗎?
阿舍爾
讀了一些東西,如在此之後:http://mikehadlow.blogspot.com/2008/09/managed-extensibility-framework-why.html使用MEF作爲一個IoC
據我瞭解,MEF有一些featcures,我不會在一個IoC發現,和MEF有一些國際奧委會的東西,是probaboly沒有先進就像其他一些IoC系統可以提供的一樣。
我需要的東西MEF。我是否還需要一個IoC框架,或者我會對MEF的工作狀況感到滿意嗎?
阿舍爾
取決於您的要求/現有的代碼。
如果你已經建立了一個IoC容器在現有代碼的基礎設施,可以在事實上與MEF結合這些。最近我一直在建立一個ASP.NET MVC + MEF框架,和一對夫婦我的讀者們一直在問如何團結與MEF + MVC框架我所建的集成。事實證明這非常簡單,這要歸功於一個名爲Common Services Locator的項目。
CSL項目旨在提供服務位置的抽象,因此我可以爲Unity提供一個CSL提供程序,使用自定義的ExportProvider進行連接,MEF自動開始編寫IoC驅動的部分。
這是MEF ExportProvider模型的好處之一,您可以輕鬆插入任何其他提供商以開始從各種來源提取出口。
上週I blogged about combining MEF+Unity(還有MEF + Autofac作爲另一個例子),儘管我的例子是爲ASP.NET MVC做準備的,但對於大多數其他實現來說,這個概念是相同的。
如果您有使用MEF構建新鮮事物的選項,您可能會發現不需要IoC容器,MEF可以處理屬性注入,構造函數注入,部分生命週期管理和類型解析。
如果您有任何疑問,請告知我:)
IoC遵循一個目的。
MEF特別是好的設計,如果你想在系統中有某種插件。 或代碼,您不信任正常運行(不要忘記來處理異常)。
,但是,它有開銷,因此來。
如果你只是想做IoC,因爲它是一個可擴展和可測試軟件的好設計模式,那麼我會推薦AutoFac,因爲它來自同一個人。或多或少:-)
和,如果你需要兩個意圖。 然後使用Both。正如馬修指出的那樣,你可以使用CSL來抽象兩者。如果想要。
的插件 - > MEF
爲你的IoC - >一個簡單的IoC
我們使用MEF作爲IoC容器,它爲我們工作。
話雖這麼說,你應該在哪裏,他列出的缺點來看看由Glenn座這篇博客文章,你可能會遇到:Should I use MEF for my general IoC needs?
MEF2(在.NET 4.5框架中)解決了該文章中概述的問題。 – 2013-04-03 23:09:11
我使用MEF兩個可擴展性和國際奧委會SoapBox Core。還有一篇關於CodeProject的文章,名爲Building an Extensible Application with MEF, WPF, and MVVM,它描述了它是如何工作的。
我最近在切換到AutoFac之前,在Web應用程序中基本上使用了提供者模型來實現「IOC」。
基本上我的要求是我需要能夠「銷售」應用程序,所以任何接口都需要被抽象化。通過使用提供者模型,事情往往會變得混亂。使用IOC容器(如果您已經是)更有意義,而且我仍然可以滿足「暢銷」的要求,因爲IOC容器可以「重新配置」以允許不同的實現。
如果你想要一個乾淨的代碼庫,因爲它有更多的約定,所以我認爲MEF將是最好的解決方案,所以基本上人們可以將組件放在一個文件夾中,而不是改變任何配置來煽動改變。這很好,但對於我的情況可能矯枉過正,只需簡單的配置覆蓋就足夠了。
瞭解更多關於我的博客文章 - 希望的博客將得到有關它的一些很好的意見太:http://healthedev.blogspot.com/2011/12/making-custom-built-applications.html
請註明的答案,造福於社會和你的支持率。 – RyBolt 2010-10-06 15:12:35