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,全称为Managed Extensibility Framework,是微软推出的一个用于构建可扩展应用程序的框架。在.NET Framework中,MEF提供了强大的插件架构支持,允许开发者轻松地将应用程序的组件解耦,使得外部代码可以安全地...
**MEFEditor_v2.0** 是一个专为Visual Studio 2012设计的插件,它基于托管可扩展性框架(Managed Extensibility Framework,MEF),提供了对C#和MSIL代码的检查以及MEF组合架构的图形化表示和可视化编辑功能。...
bkViewer支持通过IE、Firefox、Opera、Chrome右键菜单或扩展在线查看网页图片的拍摄信息; bkViewer支持实时像素拾色,方便的播放幻灯片或发送电子邮件,或将图片拖放到QQ窗口传递; bkViewer对后期处理的图片...
在Eclipse 4.2中,MEF与VE3协同工作,确保插件的动态加载和组合,从而增强了Eclipse的灵活性和扩展性。 在压缩包中的“java 安装插件”文件,很可能是指导用户如何在Eclipse 4.2中安装这些关键插件的步骤或脚本。...
11. 模块化和插件架构:了解如何使用 Prism 或 MEF 等框架实现WPF应用的模块化设计,以便于扩展和维护大型项目。 12. 集成其他.NET技术:如ADO.NET用于数据库访问,WCF用于服务通信,或者使用Entity Framework进行...
- **支持Managed Extensibility Framework (MEF)**:允许开发人员通过插件系统扩展应用程序的功能,增加了灵活性和可维护性。 #### 四、学习目标 - **掌握开发工具**:理解各个工具的作用及其在开发过程中的相互...
2.3.3 标记扩展 28 2.3.4 附加属性 29 2.3.5 嵌套元素 30 2.3.6 特殊字符与空白 32 2.3.7 事件 34 2.3.8 完整的Eight Ball Answer示例 35 2.4 使用其他名称空间中的类型 36 2.5 加载和编译XAML 38 2.5.1 只使用代码 ...
2.3.3 标记扩展 28 2.3.4 附加属性 29 2.3.5 嵌套元素 30 2.3.6 特殊字符与空白 32 2.3.7 事件 34 2.3.8 完整的Eight Ball Answer示例 35 2.4 使用其他名称空间中的类型 36 2.5 加载和编译XAML 38 2.5.1 只使用代码 ...