微软的
托管扩展性框架(Managed Extensibility Framework,MEF)是一个托管在CodePlex 上的开源(MS-PL).NET 应用程序组合框架。MEF 主要提供了两方面内容:一个插件模型和一个控制反转容器。
MEF 目前还处于开发阶段,alpha 版本,不过它的目标是使应用程序和组件能够尽可能的复用。这个想法使一个应用程序从“静态编译”转变为“动态组合”。传统的控制反转容器对于特定需求一般采用“向内关注”的模式,例如某个类需要一个日志记录器和一个事物上下文。而 MEF 更像一个插件提供者,“向外关注”于扩展点的释放。
- 诊断功能上的增强——当组合错误发生时将提供更多的错误信息。
- (创建期)生存策略的增强——导入器(Importer)能够为一个注入的对象请求一个特别的创建策略。现在,不能销毁(Non-disposable)且不共享的对象能够在容器销毁之前被垃圾收集器释放,之前的问题在于此类对象会被容器永久保留。
- 去除 AllowNonPublicCompositionAttribute——私有和内部的成员现在同样允许注入。
- 命名空间的清理——System.ComponentModel.Composition 中添加了两个新的命名空间:“.Hosting”和“.Primitives”。“Hosting 命名空间包含了托管应用程序时所需的常用类型,例如 ExportProvider、CompositionContainer 以及各种 Catalog。Primitives 命名空间包含了实现自定义编程模型的类型,例如 ComposablePart、ImportDefinition 和 ExportDefinition。”
- 类型名的清理——许多类型名称被缩短了,这会造成破坏性的改变:
- ComposablePartCatalog 及相关类型从 System.ComponentModel.Composition 移动至 System.ComponentModel.Composition.Primitives。
- AttributedTypesPartCatalog 改名为 TypeCatalog
- AttributedAssemblyPartCatalog 改名为 AssemblyCatalog
- DirectoryPartCatalog 改名为 DirectoryCatalog
- AggregatingComposablePartCatalog 改名为 AggregateCatalog
- Catalog Caching 扩展 API 作了内部修改。
- 更新了示例应用程序:
- Meflook——类似 Outlook 的客户端
- Meftris——类似俄罗斯方块的游戏,每种形状作为插件提供
- Extensible File Explorer——文件浏览器,拥有可扩展的视图,收藏文件浏览器,以及 Shell 服务。
要使用托管扩展性框架进行开发需要.NET Framework 3.5 和 Visual Studio 2008。
评论