当前位置: 首页 > 编程语言 > .NET综合 > 正文

MEF简介

时间:2010-11-18 MSDN

Managed Extensibility Framework (MEF) 使开发人员能够在其 .NET 应用程序中提供挂钩,以供用户和第三方扩展。可以将 MEF 看成一个通用应用程序扩展实用工具。

MEF 使开发人员能够动态创建扩展,无需扩展应用程序,也不需要任何特定于扩展内容的知识。这可以确保在编译时两者之间不存在耦合,使应用程序能够在运行时扩展,不需要重新编译。MEF 还可以在将扩展加载到应用程序之前,查看扩展程序集的元数据,这是一种速度更快的方法。

本实验中包含几个与可扩展性相关的关键概念:

• Composition(复合)是将几个带有不同功能的对象组合为一个或多个复杂对象的过程。复合不是从父类中继承功能,而是将几个不同的对象组合为一个对象。例如,Wing、Propeller、Fuselage 和 VerticalStablizer 对象可以组成 Aircraft 对象的一部分。

• ComposableParts 是 MEF 的关键构建块。ComposableParts 支持应用程序通过 Exports 和 Imports 公开和使用组件扩展。

• Contracts 是 Export 和 Import 组件之间的通信途径。Contract 通常通过 Interface 类实现。Contracts 支持 MEF ComposableParts 以避免依赖关系或者与其他组件之间的紧密耦合。

• Conditional Binding 允许加载满足特定元数据标准的组件。以上述示例为例,您可以选择加载 VerticalStabilizer  组件,这些组件仅由复合石墨 (composite graphite) 组成。

实现扩展的主要方式是,在应用程序的扩展点添加 Import 属性并向扩展添加相应的 Export 属性。Import 和 Export 可以看做是供应商和消费者的关系:Export 组件提供了一些价值;Import 组件消费这些价值。其他扩展选项对于开发人员是开放的,包括完全自定义的扩展方法;但是,本实验仅关注上文提到的主要方法。

目标

在本次动手实验中,您将学习如何:

• 定义组件的可扩展性选项

• 执行条件绑定和组件创建

• 在应用程序运行时导入扩展的程序集

系统要求

您必须拥有以下工具才能完成本实验:

• Microsoft Visual Studio 2010

• .NET Framework 4