2008-09-20 71 views

回答

53

MEF的主要目的是可擴展性;作爲應用程序的作者和插件的作者(擴展)的時間不同並且除了已發佈的接口(合同)庫之外沒有彼此特定知識的'插件'框架。

另一個問題空間MEF的地址與通常的IoC嫌疑人不同,也是MEF的一個優勢,是[擴展]發現。它有很多很好的可擴展發現機制,可以對與擴展關聯的元數據進行操作。從MEF的CodePlex站點:

「MEF允許標記擴展與這有利於富查詢和過濾產生額外的元數據」

結合到延遲加載標記的擴展,能夠詢問擴展元數據的能力之前加載到一個有趣的場景的大門打開了大門,並大幅啓用功能,如[插件]版本控制。

MEF還有'合同適配器',允許對擴展進行'修改'或'轉換'(從類型>),並完全控制這些轉換的細節。合同適配器相對於「發現」意味着什麼開闢了另一個創造性的前沿。另外,MEF的'intent'緊緊集中在匿名插件的可擴展性上,這與其他IoC容器非常不同。所以雖然MEF可以用於構圖,但這只是其相對於其他IoC的功能的一小部分,我懷疑我們會看到很多亂倫之間的相互影響。

+14

您有一個非常明顯的單詞選擇。 – 2011-04-14 04:01:40

26

IoC容器專注於你知道的事情,即我知道我將在單元測試中使用一個記錄器,並在我的應用程序中使用不同的記錄器。 MEF專注於那些你不需要的東西,有1到n個記錄器可能出現在我的系統中。