MEF,a primitive!
绪 MEF,"发现-重用-可动态组合";不依赖的特征编程。
什么是扩展?
扩展的本质是可以在多个程序中重用。扩展仍可以象原来一样,以程序特定的方式来实现。
MEF是什么?
MEF是微软为方便可扩展程序的创建,而提供的可管理的扩展框架简称,对程序扩展具有发现和组合能力。MEF是微软的原生框架,存在在.Net FX基准中。
用它解决什么问题?
通俗地说,就是支持插件模型。简化了运行时进行扩展这一问题的解决。
具体来说,MEF
(1)是宿主程序显化自身、揭示和曝光自已,为使用(或消费)外部扩展提供标准方式,而且对于扩展的互相依赖,则要做到正确组织、按正确的顺序将它们连接在一起;
(2)宿主程序定位和载入相关可行的扩展,发现机制的支持;
(3)允许使用额外的元数据以标记扩展,方便富查询和过滤。结构图如下。
怎么解决的?
核心是两块儿:目录表和容器。
目录表(catalog),用于发现扩展;
组合容器(CompositionContainer),协调实例创建并满足依赖关系。
最重要的类是哪个?
组合部件类(ComposablePart),有下列作用:
(1)组合部件类提供一至多个输出(Exports),当然后者也可能依赖到一至多个外部提供的服务或输入(Imports);
(2)组合部件类用来管理实例,MEF会缺省实现--给定类型(given type)的对象实例。只要遵循输入/输出合约,便一直支持可扩展可增添的组合部件实现;
(3)每个输入和输出都有合约(合约即输入和输出间的桥),输出合约可更进一步包括元数据,根据发现(discovery)再进行过滤。
(4)容器通过与栏目交互去访问组合部件。容器本身解决了部件的依赖性,并把输出显化到外部世界。如需要,可以直接向容器添加组合部件的实例。
(5)栏目返回组合部件,很可能会是程序的扩展。可能会有宿主程序所提供组件的输入(依赖),并且可能有其它的输出。
(6)组合部件实现,缺省地,使用基于特征的元数据,进行输入和输出声明。
小记:
微软重要的融合机制。
- 大小: 46.7 KB
- 大小: 64.3 KB
- 大小: 84.1 KB
- 大小: 94.5 KB
分享到:
相关推荐
实现了一个MEF可扩展框架的简易例子,可参考MEF是如何实现并工作的
MEF模块解耦,WCF Rest 扩展 基础示例
Mef demoMef demo
vs-mef, Visual Studio 使用的托管扩展性框架( MEF ) 实现 ( 管理扩展性框架工作室的视觉风格) 特性一个新的,更快的主机,为你现有的MEF部件重用已经使用的MEF属性ExportFactory<T> 支持创建具有作用域生命周期的子...
扩展性MEF.rar111
MEF框架源代码 MEF框架源代码 MEF框架源代码
这是目前metro ethernet 技术最权威的标准met,该文档是mef10.2
MEF实例,MEF实例,MEF实例,MEF实例,MEF实例,MEF实例,MEF实例
MEF全称Managed Extensibility Framework(受管理扩展性框架),是微软.NET框架下为提高应用和组件复用程度而推出的。使用MEF能够使静态编译的.NET应用程序转换为动态组合,这将是创建可扩展应用、可扩展框架和应用...
MEF 让扩展不仅可在应用程序内重复使用,还可以跨程序重复使用。传统的 C/S 端开发,如果项目不是特别复杂,常规的开发模式还是可以应对的。但是一旦场景复杂度提升,一个小小业务功能的修改就需要更新整个客户端,...
使用MEF构建可扩展的Silverlight应用程序,这个Demo实现了一个可多重扩展的运算器,可以动态下载包,也可以静态导入。可以作为很好的MEF入门示例吧。
WPF prism MEF 架构
MEF入门,适合架构师和设计师学习,不错的资料
这个代码介绍了mef与wcf整合的一个基础方案,通过mef实现动态和模块化管理wcf的一个基础实现思路。
MEF9,认证测试规范,交换设备MEF认证必须.
托管扩展性框架(Managed Extensibility Framework,简称MEF),是微软.NET框架下为提高应用和组件复用程度而推出的,用于使组件能够最大化的重用。使用MEF能够使静态编译的.NET应用程序转换为动态组合,这将是创建...
MEF14,以太网交换机设备MEF认证必须
MEF框架整理学习内容
这段代码是一个MEF的小例子,适合入门看,老手请绕道。C#写的。