写点什么

托管扩展性框架发布 Preview 4 版本

  • 2009-02-12
  • 本文字数:952 字

    阅读完需:约 3 分钟

微软的

托管扩展性框架(Managed Extensibility Framework,MEF)是一个托管在CodePlex 上的开源(MS-PL).NET 应用程序组合框架。MEF 主要提供了两方面内容:一个插件模型和一个控制反转容器。

MEF 目前还处于开发阶段,alpha 版本,不过它的目标是使应用程序和组件能够尽可能的复用。这个想法使一个应用程序从“静态编译”转变为“动态组合”。传统的控制反转容器对于特定需求一般采用“向内关注”的模式,例如某个类需要一个日志记录器和一个事物上下文。而 MEF 更像一个插件提供者,“向外关注”于扩展点的释放。

  • 诊断功能上的增强——当组合错误发生时将提供更多的错误信息。
  • (创建期)生存策略的增强——导入器(Importer)能够为一个注入的对象请求一个特别的创建策略。现在,不能销毁(Non-disposable)且不共享的对象能够在容器销毁之前被垃圾收集器释放,之前的问题在于此类对象会被容器永久保留。
  • 去除 AllowNonPublicCompositionAttribute——私有和内部的成员现在同样允许注入。
  • 命名空间的清理——System.ComponentModel.Composition 中添加了两个新的命名空间:“.Hosting”和“.Primitives”。“Hosting 命名空间包含了托管应用程序时所需的常用类型,例如 ExportProvider、CompositionContainer 以及各种 Catalog。Primitives 命名空间包含了实现自定义编程模型的类型,例如 ComposablePart、ImportDefinition 和 ExportDefinition。”
  • 类型名的清理——许多类型名称被缩短了,这会造成破坏性的改变:
    • ComposablePartCatalog 及相关类型从 System.ComponentModel.Composition 移动至 System.ComponentModel.Composition.Primitives。
    • AttributedTypesPartCatalog 改名为 TypeCatalog
    • AttributedAssemblyPartCatalog 改名为 AssemblyCatalog
    • DirectoryPartCatalog 改名为 DirectoryCatalog
    • AggregatingComposablePartCatalog 改名为 AggregateCatalog
    • Catalog Caching 扩展 API 作了内部修改。
  • 更新了示例应用程序:
    • Meflook——类似 Outlook 的客户端
    • Meftris——类似俄罗斯方块的游戏,每种形状作为插件提供
    • Extensible File Explorer——文件浏览器,拥有可扩展的视图,收藏文件浏览器,以及 Shell 服务。

要使用托管扩展性框架进行开发需要.NET Framework 3.5 和 Visual Studio 2008。

查看英文原文: Managed Extensibility Framework Preview 4

2009-02-12 01:151503
用户头像

发布了 157 篇内容, 共 58.9 次阅读, 收获喜欢 6 次。

关注

评论

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

工作方式发生了动荡?

Jackpop

ReactNative进阶(八):connect

No Silver Bullet

React Native Redux 1月月更 connect

07 Prometheus之服务发现

穿过生命散发芬芳

Prometheus 1月月更

【网络安全】浅析跨域原理及如何实现跨域

H

网络安全 网络安全信息安全、

一个cpp协程库的前世今生(十三)互斥量

SkyFire

c++ cocpp

LabVIEW彩色图像分割(基础篇—14)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 图像分割 阈值处理

个人成长中,关于规划设计的思考

程序人生

【Spring专场】「IOC容器」不看源码就带你认识核心流程以及运作原理

码界西柚

Spring Framework spring ioc 1月月更 框架原理

跟一段工作说告别了

wood

300天创作

试论架构师必备的基础能力

陈俊

架构 技术认知

在 Flutter 中发出 HTTP 请求的最佳库(2022 年)

坚果

flutter 1月月更

数据库设计三范式

Ayue、

MySQL 1月月更

Uber系统架构设计

俞凡

架构 大厂实践 uber

跟着动画学习GO数据结构之Go链表

宇宙之一粟

数据结构 链表 Go 语言 1月月更

LabVIEW色彩匹配实现颜色识别、颜色检验(基础篇—13)

不脱发的程序猿

机器视觉 LabVIEW 颜色识别 颜色检验 色彩匹配

模块五作业

Geek_e6f7f6

架构训练营

Go编译原理系列4(语法分析)

书旅

Go 编译 计算机基础 编译原理

办公专用!又一款开源免费”摸鱼“神器....

Jackpop

Python

18款口碑爆棚手机浏览器,被一网打尽了

Jackpop

【日拱一卒进击大厂系列】为什么单线程的Redis可以实现高并发访问

慕枫技术笔记

后端 1月月更

Tableau Day4:时间分析

贾献华

Tableau 1月月更

我最终选择VS Code

Jackpop

智感超清,有多智?有多清?

百度大脑

人工智能

为什么都是ViewGroup的LayoutParams,也会报cannot be cast to android.view.ViewGroup$MarginLayoutParams?

程思扬

andiod

架构实战营模块四课后作业

Jude

架构实战营

Failed to load module "canberra-gtk-module"

Ayosh

C#使用原生方法将文字朗读出来

喵叔

1月月更

Rust 元宇宙 18 —— 多场所共存的世界

Miracle

rust 元宇宙

架构实战营:模块四作业

Geek_93ffb0

「架构实战营」

Postman如何做接口测试1:如何导入 swagger 接口文档

和牛

测试

全链路压测系列(四):全链路压测的价值是什么?

老张

性能测试 生产环境全链路压测

托管扩展性框架发布Preview 4版本_.NET_Al Tenhundfeld_InfoQ精选文章