BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

第N次,CLR拥有了第一个插件模型

| 作者 Jonathan Allen 关注 530 他的粉丝 ,译者 王瑜珩 关注 0 他的粉丝 发布于 2009年7月23日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

在MEF所有功能已经完成之际,我们对.NET Framework迷雾般的扩展性框架进行了考察。MEF(托管扩展框架)实际上是微软发布的第四个扩展性框架,虽然微软声称这是第一个。

MEF是微软官方为.NET Framework打造的依赖注入框架,微软在文档中声称:

MEF为运行时扩展提供了简便的解决方案。在今天,任何希望支持插件系统的应用程序,都需要从头打造自己的一套基础设施。这些插件系统通常是和应用程序绑定的,无法被其它应用程序使用。

然而这并非事实。除了像Spring.NET 这样的第三方框架,微软自己至少还开发了其它三个.NET运行时扩展框架。

那么到底应该使用哪一个呢?Glenn Block写道:

System.Addin可以解决版本依赖、隔离和故障恢复
  • 使用System.Addin,可以让不同的组件运行在各自的域中,这样同一个插件的不同版本可以同时运行,并与它们所引用的程序集运行在同一个进程中。
  • 使用System.Addin,可以让不同版本的插件互相隔离,这样你可以同时运行同一插件的不同版本。
  • System.Addin会自动卸载那些不再使用的域,以回收内存
  • System.Addin有很多安全方面的功能(插件运行在沙箱之中)来保证组件不能访问未经授权的数据。
  • 当插件崩溃时,System.Addin可以让你优雅的从故障中恢复(这得益于插件的隔离)
另一方面,MEF可以解决插件搜索与组合
  • MEF可以组合组件中的深层次对象结构
  • MEF将组件从静态依赖中解放出来
  • MEF可以延迟加载和延迟初始化组件
  • MEF为组件提供了目录机制和丰富的元数据,使得组件可以被动态搜索到
  • MEF可以将拥有不同编程模型的组件组合在一起,而不仅仅是静态类型

虽然构建在Add-In模型之上可以在安全隔离与稳定性上得到不少好处,然而MEF并不构建在Add-In模型之上,而是从头开始编写的,并没有考虑到已有的技术。

这两种技术的微妙关系显示,在微软内部存在着不同的声音。一方面我们可以看到如《使用MEF创建可扩展程序》这样的视频,程序经理Gleen Block甚至在11月声称“MEF代表了可扩展框架的趋势”。

而另一方面,我们可以从Krzysztof Cwalina在2008年7月的演示中清楚的看到,MEF正与Add-In模型结合在一起使用,而且程序经理Nicholas Blumhardt说过,.NET 4发布后会考虑这两个项目之间的互操作

一个可能的原因是,Add-In模型对于大多数人来说并不好用。它过于复杂,而且所需的代码生成工具如System.Addin Pipeline Builder才刚刚开始开发。需要注意的是,这已经是此工具的第二春了,因为原来的项目没有人维护,也没有人修bug。

那么System.AddIn的最终命运会是什么?如无意外,它将会像LINQ to SQL一样静静的消失。

查看英文原文:For the Nth Time, the CLR Has Its First Plugin Model

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

其实这是微软内部竞争的结果 by Chu Kevin

互相借鉴,逐渐发展出最好的一个。

还在使用Spring.net by soft SG

就目前而言,还没有看到由Spring迁移的确切理由。

Re: 其实这是微软内部竞争的结果 by yang shuai

随随便便拿基础类库做试验可不好

Re: 其实这是微软内部竞争的结果 by Wei Fisher

随随便便拿基础类库做试验可不好


顶楼上的

Re: 其实这是微软内部竞争的结果 by Guo Xiaogang

MS现在老这样,比如LINQ系列和Entity Framework。很难说是好事还是坏事。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT