程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> (2)從實際項目談起,基於MEF的插件框架之總體設計,mef總體設計

(2)從實際項目談起,基於MEF的插件框架之總體設計,mef總體設計

編輯:C#入門知識

(2)從實際項目談起,基於MEF的插件框架之總體設計,mef總體設計


1.MEF框架簡介

MEF的全稱是Managed Extensibility Framework(MEF),其是.net4.0的組成部分,在3.5上也可以使用。熟悉java中的spring框架的人,對這個框架中涉及的幾個概念應該會比較容易理解。

這裡我先把我兩年多前的一個完整的利用MEF搭建的插件式系統中涉及到的MEF框架裡的幾個基本概念大致描述下。

1.1 依賴注入(export、import)

MEF框架中提供 import和export功能,即注入和導出。Spring中有依賴注入這個概念,這裡的這個概念也是大同小異,即將某個對象實例化後,注入到依賴這個實例的對象中,如此可以降低類之間的耦合。同樣,與spring中的注入類似,MEF也有延遲注入這個概念,普通的依賴注入在整個程序開始運行時便進行了注入,而這種延遲注入可以做到只有當對象需要被使用時才進行注入。

1.2約定(Contracts)

約定是與依賴注入相輔相成的。依賴注入最大的好處就是類與類之間解耦,但是如何知道到底是將一個類注入到另外一個類中呢,這裡就需要約定這個概念了。既需要注入的類並不用直接引用對方的類,而是兩者通過一個共同的接口(也可以是類等其他),此接口即為約定,從而進行導出和注入。

1.3 目錄和組件容器(catalog、compositionContainer)

我們用spring時,針對不同的應用,我們只需要啟動applicationContext或者WebApplicationContext將配置加載到IOC容器中,根據XML配置或者注記便可以實現類的依賴注入。在MEF框架中,這種IOC容器需要代碼來進行實現,並且配置一般通過注記的方式。

這裡涉及到兩個概念,分別是catalog和compositionContainer。catalog中將所有需要組裝到IOC容器中的類集中到一起,然後再將catalog放入到componentContainer中,這樣我們的IOC容器便擁有了所有的需要進行控制的類。但是僅僅放入後,也並不能讓容器進行自動的依賴注入,它還需要我們進行ComposeExportedValue和SatisfyImportsOnce這樣的操作,才能真正的完成依賴注入的全過程。

1.4 MEF框架圖

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved