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


2009-09-17 13:26:55




