.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框架完成,并能提供单例、延迟加载等特性,而无须我们显式编码实现。
CodeProject上也有几篇不错的入门教程:
MSDN电子杂志上也有一篇介绍得非常详细的文章:Building Composable Apps in .NET 4 with the Managed Extensibility Framework
由于篇幅所限,对于MEF这里并不做更多的介绍,如果想更深入的了解它的话,可以参看MSDN官方文档:Managed Extensibility Framework,其Codeplex的主页上的文档也值得一看。另外,园子里也有一系列文章写的非常不错的:《MEF程序设计指南》博文汇总。
.Net中的插件框架Managed Extensibility Framework的更多相关文章
- MEF(Managed Extensibility Framework) 微软平台插件化开发
体验Managed Extensibility Framework精妙的设计 MEF(Managed Extensibility Framework)是.NET Framework 4.0一个重要 ...
- 在ASP.NET MVC应用中开发插件框架(中英对照)
[原文] Developing a plugin framework in ASP.NET MVC with medium trust [译文] 在ASP.NET MVC应用中开发一个插件框架 I’v ...
- 体验Managed Extensibility Framework精妙的设计
MEF(Managed Extensibility Framework)是.NET Framework 4.0一个重要的库,Visual Studio 2010 Code Editor的扩展支持也是基 ...
- 使用Managed Extensibility Framework方便的扩展应用程序
概述 Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等.MEF为开发 ...
- MEF(Managed Extensibility Framework)有选择性地使用扩展组件
在"MEF(Managed Extensibility Framework)使用全部扩展组件"中,客户端应用程序调用了所有的扩展组件,而且如果有新的扩展组件加入,必须先关闭程序,再 ...
- MEF(Managed Extensibility Framework)使用全部扩展组件
MEF(Managed Extensibility Framework),所在命名空间是System.ComponentModel.Composition.dll.简单来说,MEF是将符合约定(一般是 ...
- MEF(Managed Extensibility Framework)依赖注入学习
MSDN官方资料,并且微软还提供了SimpleCalculator sample学习样例 http://msdn.microsoft.com/en-us/library/dd460648(v=vs.1 ...
- MEF(Managed Extensibility Framework )的入门介绍
1.什么是MEF MEF是一个来自于微软协作构建扩展应用的新框架,它的目的是在运行中的应用中添加插件.MEF继承于.NET 4.0 Framework平台,存在于各种应用平台的系统程序集中 2.程序集 ...
- (2)从实际项目谈起,基于MEF的插件框架之总体设计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.MEF框架简介 MEF的全称是Managed Extensibil ...
随机推荐
- 洛谷P1938 找工就业
传送门啦 这个题本质就是跑一边最长路,重点就是在怎么建图上. 我们可以把点权放到边权上面,即将每一个边的终点点权当做这个边的边权,这个题里就是将工钱 $ d $ 当做边权. 如果这一条边需要坐飞机才能 ...
- thinkphp5 url传参
url('index/blog/read',['id'=>5,'name'=>'thinkphp']); 手册https://www.kancloud.cn/manual/thinkphp ...
- 在 SQL Server 2005 中配置数据库邮件
一. SQL Server发邮件原理和组件介绍: 数据库邮件有4个组件:配置文件.邮件处理组件.可执行文件以及“日志记录和审核组件”. l 配置组件包括: 1)数据库邮件帐户包 ...
- CVE-2013-0025
Microsoft IE ‘SLayoutRun’释放后重用漏洞(CNNVD-201302-197) Microsoft Internet Explorer是微软Windows操作系统中默认捆绑的WE ...
- Windows平台的rop exp编写
摘抄自看雪 Windows的ROP与Linux的ROP并不相同,其实Linux下的应该叫做是ret2libc等等.Windows的ROP有明确的执行目标,比如开辟可执行内存然后拷贝shellcode, ...
- windows环境下的heap spray+stack pivot gadget 实现绕过dep
ASLR+DEP是windows平台下最为常见的两种保护手段.这两种手段使得最基础的jmp esp等手法不再适用,而单纯的堆喷也会因为堆内存不可执行而失效.那么这里就来介绍一下heap spray+s ...
- JavaScript中构造函数
构造函数:函数的另一种执行方法,执行后创建对象,并创建原型对象. 原型链:对象访问构造函数的指针. Function函数:函数对象. Object函数:所有创建对象的祖辈对象,也是由Function对 ...
- netty 并发访问测试配置
linux – 1.查看有关的选项 /sbin/sysctl -a|grep net.ipv4.tcp_tw net.ipv4.tcp_tw_reuse = 0 #表示开启重用.允许将 ...
- Hive(七)Hive分析窗口函数
一数据准备 cookie1,2015-04-10,1 cookie1,2015-04-11,5 cookie1,2015-04-12,7 cookie1,2015-04-13,3 cookie1,20 ...
- LoadRunner常用知识点-----LoadRunner日志输出
在Windows环境下,日志文件output.txt保存在脚本目录中:在UNIX环境下,保存在标准输出中. [Vuser]——[Run Time Settings]——[General]——[Log] ...