14

我正在开发一个 .NET 3.5 C# 桌面应用程序。它应该可以通过插件进行扩展。

是否有任何文章等讨论 MEF 和 Mono.AddIn 之间的差异,以帮助我做出明智的决定?

或者更好的是,您是否对这两个框架都有经验并可以对它们发表评论?

谢谢,帕特里克

4

3 回答 3

18

[注意:我在 MonoDevelop 上工作,它使用 Mono.Addins,但上周我与 MEF 团队的 Glenn Block 广泛讨论了 MEF 和 Mono.Addins 之间的区别]

MEF 基于组合代码,尽管底层抽象非常灵活。相比之下,Mono.Addins 基于元数据树,您可以将数据/元数据/代码插入到定义的丰富模式中,因此扩展可以添加数据/元数据以及代码。

Mono.Addins 为您提供了一个开箱即用的插件管理/打包/存储库/更新系统。对于 MEF,此时,您必须自己构建。

MEF 的进入门槛略低,更多的设计工作已经投入到它的可用性和底层抽象中。此外,它是 .NET 4 的一部分,因此它将拥有一个更大的用户社区,为它开发/为它开发。

此时,如果您需要插入数据/元数据以及代码并且想要一个现成的打包系统,我会推荐 Mono.Addins,否则我会推荐 MEF。展望未来,Mono.Addins 的功能很可能会在 MEF 上实现,因此可能会有向 MEF 迁移的路径。

于 2009-11-02T17:07:34.780 回答
4

我相信Hanselminutes Show #181对 Mono.AddIns 及其带来的影响进行了一些讨论。

在搜索网络时,我还发现了这个讨论,它强调了这两个框架当前处理目录缓存的方式的不同。

于 2009-10-20T06:29:01.563 回答
1

我对两者都进行了调查并决定使用 MEF,主要是因为它将作为 .NET 4 的一部分发布,因此会自动获得更多的支持、讨论和围绕它的开发。此外,如果我没记错的话,MEF 似乎能够在代码中使用属性来完成我需要的一切,并且 Mono.AddIns 需要一些元数据文件。

编辑:如果您想看到我使用 MEF 构建可扩展应用程序框架的努力的结果,我已经开源了它,并给它起了一个名字:SoapBox Core

于 2009-10-27T03:04:12.137 回答