雖然.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/