开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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:123097

评论

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

AI大模型爆发后,智能计算的需求有多强烈?

Finovy Cloud

人工智能 AI AI模型 AI 模型编译器 ChatGPT

人工智能技术:一文带你了解何谓AIGC

不在线第一只蜗牛

人工智能 AI技术 AIGC 人工智能技术

【实用+干货】如何使用Clickhouse搭建百亿级用户画像平台看这一篇就够了

不在线第一只蜗牛

Clickhouse 用户画像

在使用API获取JD商品的SKU信息时,需要注意哪些数据隐私和安全问题?

技术冰糖葫芦

API 开发

Path Finder mac(可以替代访达的文件管理器) v2163永久激活版

mac

苹果mac Windows软件 Path Finder 文件管理和操作工具

从 Elasticsearch 到 SelectDB,观测云实现日志存储与分析的 10 倍性价比提升

SelectDB

数据库 大数据 数据仓库 数据分析 apache doris

直播预约丨《实时湖仓实践五讲》第四讲:实时湖仓架构与技术选型

袋鼠云数栈

大数据 数据仓库 数据湖 湖仓一体 实时湖仓

想要精确搜索商品详情?闲鱼电商API接口帮你实现!

联讯数据

10种谷歌seo排名优化的方法

九凌网络

如何理解微服务体系结构中的 CQRS

快乐非自愿限量之名

数据库 微服务

一起来看看,Abaqus2024版本会有哪些“惊喜”?

思茂信息

abaqus abaqus软件 abaqus有限元仿真 有限元分析 有限元仿真

文心一言 VS 讯飞星火 VS chatgpt (150)-- 算法导论12.2 6题

福大大架构师每日一题

福大大架构师每日一题

机器学习-ROC曲线:技术解析与实战应用

快乐非自愿限量之名

人工智能 机器学习 深度学习

工程师都喜欢的一款自动生成网格的仿真软件——Hyperworks到底好不好用?

智造软件

CAE CAE软件 hyperworks

供应商企业在线询价招投标管理系统

金陵老街

String 拼接字符串效率低?是真的吗?

红袖添香

Java 字节码 字符串拼接

浅析企业特权账号管理

尚思卓越

数据安全 企业安全

多语言网站SEO和hreflang标签

九凌网络

在京东平台上,如何查找特定类别的SKU信息?

技术冰糖葫芦

API 开发

独立开发者都使用了哪些技术栈?

互联网工科生

独立开发者 软件开发 技术栈

IT外包服务内容有哪些?

Ogcloud

外包 IT 外包公司 项目外包 IT 运维

Wireshark中的TCP协议包分析

小魏写代码

探索Web前端技术的变革与未来发展

EquatorCoco

前端 Web 技术开发

3D模型制作木质纹理贴图

3D建模设计

3D模型 材质贴图 纹理贴图 材质纹理

Footprint Analytics x Future3 万字研报:AI 与 Web3 数据行业融合的现状、竞争格局与未来机遇探析(上)

Footprint Analytics

区块链 AI web3

腾讯云大数据ClickHouse遇见Schema-less: 半结构化数据分析性能提升20倍!

腾讯云大数据

Clickhouse

盘后股价狂飙16% — GitLab的DevOps产品在AI时代展现强劲财务业绩

极狐GitLab

人工智能 AI DevOps gitlab AIGC

解读JetBrains 2023年开发者生态报告,MySQL仍是全球数据库顶流 | StoneDB数据库观察 #11

StoneDB

MySQL 数据库 HTAP StoneDB

招聘IT人才vs IT外包,怎么选?

Ogcloud

外包 IT 外包公司 项目外包 IT 运维

StoneDB-8.0-V2.2.0 企业版正式发布!性能优化,稳定性提升,持续公测中!

StoneDB

MySQL 数据库 HTAP StoneDB

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