.Net中的插件框架Managed Extensibility Framework
2013-08-10 22:22
253 查看
Managed Extensibility Framework(MEF)是微软的一个用来扩展.NET应用程序的框架,它最初为了满足Visual Studio里的编辑器的需求,比如说,延迟加载所有东西和细粒度协定。随着托管代码慢慢地取代基于COM的扩展模型,MEF框架也逐渐成型。
MEF是在Codeplex上开源的,并且现在已经是.Net 4.0的一部分。我们可以用它非常容易的实现插件框架。一个简单的示例如下(使用时需要添加System.ComponentModel.Composition.dll 的引用):
View Code
这个例子比较简单,并不能很好的体现MEF带来的便利,MS官方的一个稍微复杂点的例子SimpleCalculator更合适一些。
不过,从这个例子中也可以看出MEF的基本工作方式:服务方通过ExportAttribute导出可提供的服务,使用者通过ImportAttirbute导入所需要的服务。它们之间彼此隔离而独立,服务对象的创建由MEF框架完成,并能提供单例、延迟加载等特性,而无须我们显式编码实现。
CodeProject上也有几篇不错的入门教程:
An Introduction to Managed Extensibility Framework
Managed Extensibility Framework: Part 1
Managed Extensibility Framework: Part 2
MSDN电子杂志上也有一篇介绍得非常详细的文章:Building Composable Apps in .NET 4 with the Managed Extensibility Framework
由于篇幅所限,对于MEF这里并不做更多的介绍,如果想更深入的了解它的话,可以参看MSDN官方文档:Managed Extensibility Framework,其Codeplex的主页上的文档也值得一看。另外,园子里也有一系列文章写的非常不错的:《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); } }
View Code
这个例子比较简单,并不能很好的体现MEF带来的便利,MS官方的一个稍微复杂点的例子SimpleCalculator更合适一些。
不过,从这个例子中也可以看出MEF的基本工作方式:服务方通过ExportAttribute导出可提供的服务,使用者通过ImportAttirbute导入所需要的服务。它们之间彼此隔离而独立,服务对象的创建由MEF框架完成,并能提供单例、延迟加载等特性,而无须我们显式编码实现。
CodeProject上也有几篇不错的入门教程:
An Introduction to Managed Extensibility Framework
Managed Extensibility Framework: Part 1
Managed Extensibility Framework: Part 2
MSDN电子杂志上也有一篇介绍得非常详细的文章:Building Composable Apps in .NET 4 with the Managed Extensibility Framework
由于篇幅所限,对于MEF这里并不做更多的介绍,如果想更深入的了解它的话,可以参看MSDN官方文档:Managed Extensibility Framework,其Codeplex的主页上的文档也值得一看。另外,园子里也有一系列文章写的非常不错的:《MEF程序设计指南》博文汇总。
相关文章推荐
- Managed Extensibility Framework(MEF) 自动发现式扩展框架
- ASP.NET MVC and the Managed Extensibility Framework (MEF)
- MEF(Managed Extensibility Framework ) 可控扩展框架
- Managed Extensibility Framework(MEF) 2 框架新特性介绍
- .NET Framework 3.0框架慨述
- MEF(Managed Extensibility Framework) 微软平台插件化开发
- RDIFramework.NET ━ .NET快速信息化系统开发框架 ━ 工作流程组件介绍
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-模块管理按子系统进行分类管理
- ADO.NET Entity Framework 定义高级数据模型(实体框架任务)
- RDIFramework.NET框架Web中datagrid与treegrid控件自动生成右键菜单与列标题右键菜单
- 不安装.net framework框架运行.Net 程序的方法<收藏>
- 让.Net程序脱离.Net Framework框架运行
- 实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-WinForm
- RDIFramework.NET ━ .NET快速信息化系统开发框架- 4.8 模块(菜单)管理
- RDIFramework.NET ━ .NET快速信息化系统开发框架-4.3 平台主界面
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->Web版本新增新的角色授权管理界面效率更高、更规范
- 让.Net 程序脱离.net framework框架运行
- .NET快速开发整合框架(RDIFramework.NET)试用申请
- 使用.net framework再发布的插件发布应用程序