写点什么

Managed Extensibility Framework:它是什么,前景如何

  • 2011-10-17
  • 本文字数:1193 字

    阅读完需:约 4 分钟

顾名思义,Managed Extensibility Framework 是一个用来扩展.NET 应用程序的框架。最近 Channel 9 采访了 Oleg Lvovitch 和 Kevin Ransom ,谈到 MEF 的历史以及第二版的计划。

MEF 非常不幸地成为.NET 里最常被误用的库。开发者经常把它用作一个通用的依赖注入框架或者控制反转容器,这些角色都不适合它。甚至有人更进一步地把它用作“new”运算符的替代品。微软的 Glenn Block 解释了 Managed Extensibility Framework 的真正用意:

我们不希望把 MEF 看作通用 IoC。最好把 MEF 的 IoC 方面看作一个实现细节。我们使用 IoC 模式是因为它很好地解决了我们面临的问题。

MEF 的关注点是扩展性。当你考虑 MEF 时,把它看作推进我们的平台发展的一项投资。我们将来的产品和平台将会把 MEF 用作添加扩展性的标准机制。第三方产品和框架也将利用相同的机制。MEF 的普通“用户”会创建 MEF 可以使用的组件,但不会在他们的应用程序里直接使用 MEF。

想象一下,当你想扩展我们的平台时,你在 bin 文件夹里放一个 dll,你的事情已经完成了。启用 MEF 的应用程序会识别并利用新的扩展。这才是 MEF 的愿景。

到目前为止,MEF 的历史上最重要的应用程序是 Visual Studio 10。许多特性都是为了满足 Visual Studio 里的编辑器的需求,比如说,延迟加载所有东西和细粒度协定。随着托管代码慢慢地取代基于 COM 的扩展模型,在 Visual Studio 里使用 MEF 的情况在 Visual Studio 11 里会逐渐增加。

MEF 2.0 不会是一个革命性的版本。大多数特性都是为了解决 Visual Studio 组和广大社区反馈的问题。一个重要的改变是简化了编程模型。虽然适合像 Visual Studio 的复杂应用程序,但承载 API 对于只有少数几个扩展点的小型应用程序来说有点复杂。这项工作仍然在进行中,目前没有细节可以提供。

另一方面,MEF 正在尝试更好地支持容器的层级结构。每个容器都可以把它自己的上下文添加到从父容器继承过来的上下文。举个例子,Visual Studio Shell 可以看作一个容器。里面包含了每个项目的容器,对应的上下文包含了项目类型和项目文件等信息。第三层容器可能是单个文件的编辑器。MEF 1 已经可以处理这种情况,不过做法有点笨拙。

MEF 1 的一个主要问题是无法诊断组合问题。没有 MEF 的源代码和巧妙设置的断点,要确定具体的原因可能非常困难。MEF 2 在这方面已经投入大量资源,确保这将不再是问题。

.NET 4.5 的一个新特性是自定义反射上下文。你可以根据常规C#代码的表达规则在运行时通过反射上下文向一个类添加特性声明。MEF 2 里的 RegistrationBuilder 会接受这些自定义特性,把它们当作本来就有那样处理。这允许在 MEF 里使用 POCO 类型,即使你无法访问这些类型的源代码。

MEF 也将适用于 Windows 8 Metro 应用程序,但形式上会有很大不同。大多数高级功能都被移除,只关注 MEF 的主要用途,暴露扩展点和加载扩展。

查看英文原文: Managed Extensibility Framework: What It is and Where It is Going

2011-10-17 18:123150

评论

发布
暂无评论
发现更多内容

化学绘图神器 ChemDraw for Mac破解版 兼容m/intel芯片

Rose

ChemDraw破解版 ChemDraw化学绘图 ChemDraw下载安装

从知识图谱到 GraphRAG:探索属性图的构建和复杂的数据检索实践

可信AI进展

人工智能

FlowJo 10 for Mac 流式数据分析软件 破解版安装教程

Rose

FlowJo 10下载 FlowJo破解版 FlowJo安装教程

修改手机定位软件--AnyGo中文激活版 AnyGo永久激活破解安装

Rose

Mac软件 AnyGo 虚拟机定位

5年质保!英特尔宣布:为第13和14代酷睿台式处理器延长2年保修

E科讯

结束了~

XIAOJUSURVEY

开源 程序员 代码 贡献者 活动运营

阿里云实时计算Flink在多行业的应用和实践

阿里云大数据AI技术

大数据 flink 实时计算

有了MES、ERP,质量管理为什么还需要QMS?

万界星空科技

万界星空科技 QMS 质量管理QMS系统 生产质量管理 产品质量管理

3D渲染和动画制作KeyShot 2024.2 中文版 for mac/win破解版下载 含许可证文件

Rose

渲染 动画制作 KeyShot 2024许可证 KeyShot 2024.2安装教程 KeyShot 2024 破解下载

【附源码+教程】基于华为云物联网设计的人工淡水湖养殖系统

DS小龙哥

8月月更

开发者必看:Temu商品列表API接口详解应用

tbapi

temu temu API temu商品列表接口 关键词搜索temu列表接口

Topogun 3 for mac安装教程(强大的模型拓扑工具)v27840激活版

Rose

CleanShot X for mac:屏幕全域截图、窗口截图、屏幕、标注、滚动截图

Rose

mac截图工具 CleanShot X for mac CleanShot X下载 CleanShot X截图

扣子专业版:低代码能力+专业级SLA,让“企业级 AI Bot”更快落地

新消费日报

科研数据绘图分析 GraphPad Prism10激活版 for mac/win

Rose

GraphPad Prism 10 GraphPad Prism破解版 GraphPad Prism下载 科研数据绘图

(价格准确)淘宝推荐引擎揭秘:商品详情页API背后的智能算法

代码忍者

API 安全 API 文档 API 测试

科学文献管理endnote 21激活码(endnote 21大客户授权版许可证)

Rose

endnote 21激活码 endnote 21大客户授权版 科学文献管理

WebStorm 2024 mac中文永久密钥 WebStorm安装教程 支持M1/M2/M3

Rose

WebStorm中文版 WebStorm 2024下载 WebStorm 2024破解版 WebStorm密钥

Autodesk Maya 2025.2中文版最新浮动许可证 maya2025安装教程分享

Rose

Maya 2025中文版 Maya 2025安装教程 玛雅2025破解版 Maya 2025浮动许可 三维动画

(优惠券数据)京东商品详情API深度解析:品牌与分类信息的智能检索与应用

代码忍者

API 安全 API 文档 API 测试

淘宝商品详情数据接口:价格数据实时获取方法

tbapi

淘宝API接口 淘宝商品详情接口 淘宝商品价格接口 淘宝实时价格接口

局域网远程桌面控制软件有哪些

科技热闻

Managed Extensibility Framework:它是什么,前景如何_.NET_Jonathan Allen_InfoQ精选文章