《MEF程序設計指南》博文匯總
雖然.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/
Managed Extensibility Framework(MEF)是.NET平臺下的一個擴展性管理框架,它是一系列特性的集合,包括依賴注入(DI)以及Duck Typing等。MEF為開發人員提供了一個工具,讓我們可以輕松的對應用程序進行擴展并且對已有的代碼產生最小的影響,開發人員在開發過程中根據功能要求定義一些擴展點,之后擴展人員就可以使用這些擴展點與應用程序交互;同時MEF讓應用程序與擴展程序之間不產生直接的依賴,這樣也允許在多個具有同樣的擴展需求之間共享擴展程序。
浙公網安備 33010602011771號