MEF,擴充套件預覽

2021-08-30 15:06:53 字數 1303 閱讀 3306

mef,a primitive!

mef,"發現-重用-可動態組合";不依賴的特徵程式設計。

什麼是擴充套件?

擴充套件的本質是可以在多個程式中重用。擴充套件仍可以象原來一樣,以程式特定的方式來實現。

mef是什麼?

mef是微軟為方便可擴充套件程式的建立,而提供的可管理的擴充套件框架簡稱,對程式擴充套件具有發現和組合能力。mef是微軟的原生框架,存在在.net fx基準中。

用它解決什麼問題?

通俗地說,就是支援外掛程式模型。簡化了執行時進行擴充套件這一問題的解決。

具體來說,mef

(1)是宿主程式顯化自身、揭示和**自已,為使用(或消費)外部擴充套件提供標準方式,而且對於擴充套件的互相依賴,則要做到正確組織、按正確的順序將它們連線在一起;

(2)宿主程式定位和載入相關可行的擴充套件,發現機制的支援;

(3)允許使用額外的元資料以標記擴充套件,方便富查詢和過濾。結構圖如下。

怎麼解決的?

核心是兩塊兒:目錄表和容器。

目錄表(catalog),用於發現擴充套件;

組合容器(compositioncontainer),協調例項建立並滿足依賴關係。

最重要的類是哪個?

組合部件類(composablepart),有下列作用:

(1)組合部件類提供一至多個輸出(exports),當然後者也可能依賴到一至多個外部提供的服務或輸入(imports);

(2)組合部件類用來管理例項,mef會預設實現--給定型別(given type)的物件例項。只要遵循輸入/輸出合約,便一直支援可擴充套件可增添的組合部件實現;

(3)每個輸入和輸出都有合約(合約即輸入和輸出間的橋),輸出合約可更進一步包括元資料,根據發現(discovery)再進行過濾。

(4)容器通過與欄目互動去訪問組合部件。容器本身解決了部件的依賴性,並把輸出顯化到外部世界。如需要,可以直接向容器新增組合部件的例項。

(5)欄目返回組合部件,很可能會是程式的擴充套件。可能會有宿主程式所提供元件的輸入(依賴),並且可能有其它的輸出。

(6)組合部件實現,預設地,使用基於特徵的元資料,進行輸入和輸出宣告。

小記:

微軟重要的融合機制。

MEF學習小結 z

mef,全稱是managed extensibility framework。它是.net framework4.0的乙個類庫,其主要目的是為了建立可擴充套件的應用程式。按照官方說法就是 用於簡化在部署後可由第三方進行擴充套件的可組合系統的設 計。mef 可使您的應用程式具有開放性,從而允許應用程式...

MEF簡單學習筆記

首先,最基本的還是先要知道mef是撒,他是幹嘛用的 1 mef 全稱managed extensibility framework 託管可擴充套件框架 2 msdn上說明 managed extensibility framework 或 mef 是乙個用於建立可擴充套件的輕型應用程式的庫。應用程式...

MEF系列一 應用程式中的宿主MEF

在應用程式中宿主mef包含建立組合容器物件 compositioncontainer 向組合容器物件新增可組合部件 parts 包含應用程式宿主本身,最後進行組合。下面是關於宿主的步驟 1 建立乙個宿主類,在本例中我們使用乙個控制台程式,所以宿主就是program類。2 新增引用 system.co...