雖然.NET平臺下,包括MS在內的各種方案已經遍地開花,但是MEF是第一個隨著CLR釋出的解決方案。
花了一個月左右的休息時間將官方提供的MEF程式設計指南(The MEF Programming Guide)以及自己使用中的一些經驗進行了整理,為了方便大家閱讀特將此係列博文進行彙總,詳細如下博文列表。
本篇通過一個簡單的應用例項介紹瞭如何在應用程式中宿主MEF,以及最基本的匯入、匯出和部件組合的應用。
MEF程式設計指南二:Silverlight中使用CompositionInitializer宿主MEF
本篇介紹瞭如何在Silverlight中使用CompositionInitializer宿主MEF,並通過不同的匯入匯出配置,演示了MEF的動態裝載配件組合和一些簡單的應用案例。
MEF程式設計指南三:MEF中組合部件(Composable Parts)與契約(Contracts)的基本應用
本篇介紹瞭如何定義組合部件(Composable Parts)和契約(Contracts),以及基於契約的的多重元件部件的相關應用,包括介面的多實現,如何使用ImportManyAttribute特性通過契約獲取介面的多重實現例項等。最後還介紹了通過契約進行約束,實現裝配指定契約的部件。
MEF程式設計指南四:使用MEF宣告匯出(Exports)與匯入(Imports)
本篇介紹瞭如何使用MEF宣告匯出(Exports)與匯入(Imports),包括類、欄位、屬性以及方法級別的部件匯出、匯出的應用。
MEF程式設計指南五:遲延(Lazy)載入匯出部件(Export Part)與後設資料(Metadata)
本篇介紹了MEF中的遲延載入(Lazy)機制和後設資料(Metadata)匯出功能特性。
MEF程式設計指南六:MEF中的目錄服務(DeploymentCatalog)
對於MEF的目錄服務MEF分別為WPF和Silverlight提供了不同的目錄機制。使用目錄的主要功能就是方便實現程式部件的裝載,以及動態的組合應用程式部件等功能,更可以非常方便的得到程式部件的程式集、匯出部件等相關資料。
MEF程式設計指南七:使用目錄(Catalog)動態裝載xap與目錄篩選(Filtered Catalog)
如果不使用MEF進行託管擴充套件處理,只有通過WebClient進行程式包的下載、解析。實際上MEF的動態下載的底層實現一樣是使用的WebClient,然後利用AggregateCatalog進行動態組合。
MEF程式設計指南八:部件生命週期(Parts Lifetime)託管
MEF中的每一個可進行動態裝配的匯出部件都是具有生命週期的,在沒有特別需求的情況下一般都沒有對生命週期進行管理,而實際上MEF已為每一個部件進行了預設的生命週期管理,MEF的生命週期分為三種:Any、Shared及NonShared,被定義在System.ComponentModel.Composition.CreationPolicy列舉物件中。
MEF程式設計指南九:重組(Recomposition)MEF部件
通過前面八篇程式設計指南的學習,相信大家都知道應用程式部件的組合都是在初始化的時候進行裝配的。如果當應用程式已經初始化完成了,此時又有新的部件被匯入且進行裝配,按照目前的實現方式就無法實現了,我們需要一種可以進行動態裝配、動態組合以及可以動態的進行新的部件被裝配組合的通知的功能,於此MEF所提供的重組(Recomposition)部件特性就可以派上用場了。
MEF官方網站:http://mef.codeplex.com/