MEF 与 Mono.AddIn

2024-03-16

我正在开发一个 .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。展望未来,Mono.Addins 的功能很可能会在 MEF 上实现,因此可能会有一条向 MEF 的迁移路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MEF 与 Mono.AddIn 的相关文章

随机推荐

  • 建模:Xml 与关系数据库

    我想知道是否有最佳实践来决定何时应使用 XML 对系统进行建模以及何时应使用关系数据库进行建模 我知道您可以将 XML 存储在数据库中 但是对系统进行建模之间存在巨大差异使用标准化数据库表并使用 XML 模式对系统进行建模 为了具体起见 假
  • 从 rpy2 传递到 R 的什么对象?

    我无法使以下代码工作 尽管我没有看到此错误在 R 中严格工作 from rpy2 robjects packages import importr from rpy2 import robjects import numpy as np f
  • R 中的 Markdown 表到数据框

    有多种方法可以将数据框转换为 Markdown 表 但是 给定 Markdown 表 如何转换回数据帧 给定一个表格 Table Header Second Header Table Cell Cell 2 Cell 3 Cell 4 或者
  • Python函数参数:元组/列表

    我的函数需要一个列表或元组作为参数 它并不真正关心它是什么 它所做的只是将其传递给另一个接受列表或元组的函数 def func arg arg is tuple or list another func x do other stuff h
  • 工厂女孩在我的开发数据库中保存记录

    我有一个非常奇怪的问题 我不知道应该去哪里找到它 我正在使用 rspec 和 Factory Girl 开发一个 Rails 3 应用程序进行测试 由于某种原因 每当我运行任何rails命令 例如 rake数据库 启动开发服务器等 时 都会
  • 如何避免 svgs 的foreignObjects 内的元素缩放?

    我想使用 svg 作为 div 元素的容器 该元素应包含多个元素 目前它看起来像这样
  • Objective-C 相当于 Java 包吗?

    Java 包的 Objective C 等价物是什么 你如何用 Objective C 来分组和组织你的课程 问题 1 Objective C 相当于 Java 包吗 Objective C 没有与 Java 包或 C 命名空间等效的东西
  • Git/GitKraken – 从备份恢复存储库后,文件模式更改为未知值 (14001)

    对 Git Kraken 还是个新手 如果逻辑板对我来说坏了 我必须从备份中恢复存储库 重新安装软件 然后在临时计算机上恢复并运行 直到我可以从商店取回原始计算机 现在我在 Gitkraken 中打开了存储库 这告诉我我的修补程序分支上有
  • 如何增加 docker build 的卷大小

    我的步骤之一Dockerfile需要10G以上的磁盘空间 确实如此 然而 所有的中间容器docker build使用 10G 卷创建 我做了什么 started dockerd with storage opt dm basesize 25
  • 如果发生异常,“Content-encoding”标头将从 HttpHandler 响应中消失

    我有一个自定义 HttpHandler 在其中手动启用输出压缩 如下所示 context Response AppendHeader Content encoding gzip context Response Filter new GZi
  • 返回文本之间的亲和力的函数?

    考虑我有一个 string1 hello hi goodmorning evening 我有一些小关键字 compare1 hello evening compare2 hello hi 我需要一个返回文本和关键字之间的关联性的函数 例子
  • Java 配置构建路径或 WEB-INF/lib 文件夹[重复]

    这个问题在这里已经有答案了 我见过很多教程和应用程序将其 jar 放在构建路径中 而其他教程和应用程序将其放在 web inf lib 文件夹中 有什么显着差异吗 两者有何优缺点 我将某个 jar 放入 libs 文件夹中并将该 jar 放
  • ajax请求struts 2中的操作不返回任何视图

    我有一个用于区域设置选择的下拉列表 当用户更改它时 我将 ajax 请求发送到设置会话边界的操作 现在的问题是我应该从操作的execute 方法返回什么 您可以返回 HTTP 200 OK 这应该是一个空的成功响应
  • Unity:将网格物体轻轻包裹在其他网格物体周围?

    给定一个网格 如左侧的立方体对象 和另一个自定义的球状网格 右侧 如果更容易的话 它可以是另一种形状 Unity 和 C 中的一个在运行时如何将第二个网格轻轻包裹在第一个网格周围 谢谢 下面的方法 借助 VirtualMethodStudi
  • Windows 上的 Spark-shell 错误 - 如果不使用 hadoop 可以忽略它吗?

    启动spark shell时出现以下错误 我将使用 Spark 处理 SQL Server 中的数据 我可以忽略这些错误吗 java io IOException 无法在 Hadoop 二进制文件中找到可执行文件 null bin winu
  • 为什么运行 StAX Parser 时出现 NullPointerException?

    我正在尝试用 Java 编写 StAX XML 解析器 但总是出现 NullPointerException 错误 请帮我解决这个问题 完整问题 线程 main 中的异常 java lang NullPointerException org
  • 相当于 jQuery 的 $(window).width 的原始 JavaScript 是什么?

    我听说这是偏移宽度 https stackoverflow com questions 833699 clientheight clientwidth returning different values on different brow
  • 在 Laravel 的 FormRequest 中使用复杂的条件验证规则

    我正在使用 Laravel 开发一个 Web 应用程序 我现在正在做的是创建一个 FirmRequest 来进行验证 这是我的表格请求 use Illuminate Foundation Http FormRequest class Sto
  • VS 2019 SSIS包无法添加SQL Server

    我安装了 Visual Studio 2019 和 SSIS 包扩展并创建了一个新项目 我可以毫无问题地将我的 SQL Server 添加为连接管理器 但是当我拖动Data Flow Task到包中并拖动Source Assistant对此
  • MEF 与 Mono.AddIn

    我正在开发一个 NET 3 5 C 桌面应用程序 它应该可以通过插件进行扩展 是否有任何文章等讨论 MEF 和 Mono AddIn 之间的差异来帮助我做出明智的决定 或者更好的是您有这两个框架的经验并且可以对它们发表评论吗 谢谢 帕特里克