詳解.NET 4下的MEF架構
51CTO向您推薦《Visual Studio 2010應用與開發詳解》專題,以便于您更好的理解本文。
在上篇WPF -.NET 4.0解決了DataGrid分組時的內存泄露中說過由于內存泄露問題,OpenExpressApp升級到.Net4平臺,然后升級后之前的compositewpf出了點問題。在OpenExpressApp考慮動態擴展組件機制方面,以前就考慮過MEF,但當時還不成熟,所以使用了compositewpf,而現在MEF已經成為了.NET***公民,compositewpf又沒有提供.NET 4的版本,也很久沒有升級了,也不明確它的發展方向,并且現在軟件中有些內存泄露問題也與它有關,所以干脆使用MEF作為插件機制。這里把這兩個一起提出,主要是從動態擴充組件來說的,它們實際上不是一個東西,可以并存的,在這里就不多說這些了,下面我主要介紹一下MEF的架構,希望從總體上有所了解,更改OpenExpressApp后我會再寫篇文章介紹一下如何在OpenExpressApp中使用MEF的。
主要示意圖
各種Export提供者從目錄提取part信息,然后由CompositionContainer進行裝配,其中每個part都包含Import和Export兩部分內容。
主要組成圖
由容器、基礎類庫和屬性編程模型組成,組成東西其實不多,要想擴充自己的東西必須熟悉這些東西。
我現在只是想用MEF替代Prsim實現插件擴充機制,由于時間緊張也不能深入研究,所以目前也就是使用過其中一些類,如:CompositionContainer、CompositionBatch、AssemblyCatalog、DirectoryCatalog和屬性標記等,后面我會具體將從Prsim更改為MEF的。
主要類圖
具體內容可以參考:
Hosting the .NET Composition Primitives.pdf
http://mef.codeplex.com/Project/Download/FileDownload.aspx?DownloadId=62133
原文標題:.Net4下的MEF(Managed Extensibility Framework) 架構簡介
鏈接:http://www.cnblogs.com/zhoujg/archive/2010/05/26/1740628.html
【編輯推薦】