.net - MEF 与 Mono.AddIn

标签 .net plugins mef add-in mono.addins

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

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

或者更好的是,你有这两个框架的经验并且可以评论它们吗?

谢谢,
帕特里克

最佳答案

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

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

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

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

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

关于.net - MEF 与 Mono.AddIn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1592779/

相关文章:

.net - 如何在 PowerShell 5 中定义和使用自定义属性?

java - 如何测量 Java 代码库中的测试密度?

c# - 在起订量中传递谓词函数参数失败

c# - MEF:缺少 ComposeParts

javascript - 为什么 AJAX 会破坏插件?

dependency-injection - MEF 和 IoC 容器之间的区别(如 Unity、Autofac、SMap、Ninject、Windsor.Spring.net 等)

.net - 发布设计审计表以跟踪更改

c# - 如何将此 C# 工作线程代码与共享数据变量的主线程分离?

c# - 如何解决 "striped"表的 Blazor/Bootstrap 5 CSS 问题?

c# - 具有向前和向后兼容性的插件架构