.Net插件框架Managed Extensibility Framework簡介
Managed Extensibility Framework(MEF)是微軟的一個用來擴展.NET應用程序的框架,它最初為瞭滿足Visual Studio裡的編輯器的需求,比如說,延遲加載所有東西和細粒度協定。隨著托管代碼慢慢地取代基於COM的擴展模型,MEF框架也逐漸成型。
MEF是在Codeplex上開源的,並且現在已經是.Net 4.0的一部分。我們可以用它非常容易的實現插件框架。一個簡單的示例如下(使用時需要添加System.ComponentModel.Composition.dll 的引用):
class Program { [Import] ILogger logger; void Compose() { var catalog = new AssemblyCatalog(this.GetType().Assembly); var container = new CompositionContainer(catalog); container.ComposeParts(this); } public static void Main(string[] args) { var p = new Program(); p.Compose(); p.logger.LogMessage("hello world"); } } interface ILogger { void LogMessage(string msg); } [Export(typeof(ILogger))] class ConsoleLogger : ILogger { public void LogMessage(string msg) { Console.WriteLine(DateTime.Now + ": " + msg); } }
這個例子比較簡單,並不能很好的體現MEF帶來的便利,MS官方的一個稍微復雜點的例子SimpleCalculator更合適一些。
不過,從這個例子中也可以看出MEF的基本工作方式:服務方通過ExportAttribute導出可提供的服務,使用者通過ImportAttirbute導入所需要的服務。它們之間彼此隔離而獨立,服務對象的創建由MEF框架完成,並能提供單例、延遲加載等特性,而無須我們顯式編碼實現。
到此這篇關於.Net插件框架Managed Extensibility Framework的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。