在 MEF 和 MAF 之间进行选择 (System.AddIn)

2024-04-08

托管扩展性框架 (MEF) 和托管外接程序框架(MAF,又名 System.AddIn)似乎完成非常相似的任务。根据这个堆栈溢出问题,MEF 是 System.Addin 的替代品吗? https://stackoverflow.com/questions/124040/is-mef-a-replacement-for-system-addin,您甚至可以同时使用两者。

您什么时候会选择使用其中一种而不是另一种?什么情况下你会选择两者一起使用?


我一直在评估这些选项,这是我得出的结论。

MAF 是一个真正的插件框架。您可以完全分离您的插件,甚至可以在单独的应用程序域中运行它们,这样如果插件崩溃,它不会关闭您的应用程序。它还提供了一种非常完整的方法,使插件不再依赖任何东西,除了你给他们的合同。事实上,您可以在升级主应用程序时对合同适配器进行版本化,以提供对旧插件的向后兼容性。虽然这听起来不错,但为了跨应用程序域,您必须付出沉重的代价。您付出的代价是速度以及可来回发送的类型的灵活性。

MEF 更像是依赖注入,具有一些额外的好处,例如可发现性和......(在这一点上画一个空白)。 MEF 中不存在 MAF 所具有的隔离程度。它们是针对两种不同事物的两种不同框架。

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

在 MEF 和 MAF 之间进行选择 (System.AddIn) 的相关文章

  • 如何在.NET中将Assembly类的对象保存到磁盘

    我已将其编码为磁盘上的 Base64 字符串 它需要 dll 表示 我可以将它加载到 Assembly 对象中 但找不到保存它的方法 谢谢 那么 1 如何将Assembly类的对象保存到磁盘 2 如何将base64编码的程序集保存到二进制d
  • WPF - 检测鼠标按下一段时间

    检测鼠标按钮何时在特定元素上按住特定时间段的最佳方法是什么 感谢您的提示 我创建了一个附加属性以避免任何代码隐藏 using System using System Windows using System Windows Threadin
  • WPF 元素宿主内存泄漏

    我在 Windows 窗体上使用元素主机时遇到奇怪的内存泄漏 我有一个主窗体 它打开另一个窗体 该窗体上只有 elementhost 控件 此时 它没有 wpf 控件子控件 只能打开 1 个主机表单 每次我打开窗体时 应用程序内存都会增加2
  • 如何正确复制/克隆结构?我应该使用一个类吗?

    假设我有那个 Structure myStruct Public myPoint As Point Public myBool As Boolean End Structure 如何复制 克隆该结构 我现在解决了这个问题 我使用的代码示例
  • 服务层设计。将事物放入服务层的原因

    我有一些与设计相关的问题 should service layer interfaces居住在一个domain layer 例如user service 将代码部分移动到单独层的主要原因是什么 should service layer居住在
  • 为什么自定义类型变量不保存值MVC

    我正在尝试使用 MVC 5 构建一个网站 我有一个包含 3 个变量的控制器类 public class WorkerController Controller public ViewModel viewModel new ViewModel
  • Visual Studio 2022 - 编译旧应用程序时出错

    我们正在尝试在 Visual Studio 2022 中使用 VB6 32 位应用程序 编译 2002 年以来非常旧的应用程序 我们需要调试此应用程序并能够在 Windows 10 计算机上运行此应用程序 编译时 我们发现以下错误 这似乎是
  • 计算按月分隔的两个日期之间的天数

    我需要计算两个日期之间的天数 DateTime 但有一个转折 我想知道这两天跨越的每个月有多少天 两个人有简单的方法吗 Example 我的开始日期是 30 03 2011 结束日期是 05 04 2011 那么结果应该是这样的 var r
  • 正则表达式不等于字符串

    我用正则表达式用头撞墙 我正在尝试定义一个表达式 该表达式完全排除此文本 System 不区分大小写 但可以包含 系统 这个词提供的不仅仅是这个 例子 系统 无效 系统 无效 系统 无效 系统 无效 asd 系统 有效 asd 系统 asd
  • 运行 t4 脚本作为 resx 文件的自定义工具

    我有一个资源文件MyResource resx 我想改变MyResource Designer cs文件生成 我有一个 t4 脚本 它接受 resx 文件作为输入并给出结果转换 但是 我必须手动运行此 t4 才能使其工作 我看到 resx
  • 在 DataGridView 中隐藏行非常慢

    我在 Winforms 应用程序中有一个 DataGridView 大约有 1000 行 未绑定 和 50 列 隐藏一列需要整整 2 秒 当我想隐藏大约一半的行时 这就成为一个问题 private void ShowRows string
  • 实用程序库中应包含哪些内容[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 随着我的项目越来越多 我发现我经常从一个项目到另一个项目 从一个客户到另一个客户重复许多常见的任务 因此 我开始组装一个 实用程序 库 这是这些
  • C# Julian 日期解析器

    我在电子表格中有一个单元格 它是 Excel 中的日期对象 但当它来自 C1 的 xls 类时 它会变成双精度型 类似于 2009 年 1 月 7 日的 39820 0 我读到这是儒略日期格式 有人可以告诉我如何在 C 中将其解析回 Dat
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • 解决找不到程序集的问题 |文件未找到异常 |融合日志

    我正在尝试将我的解决方案包 wsp 部署到 SharePoint 2007 环境 WSP 包含一个功能 该功能加载功能接收器类以在运行时部署计时器作业 在部署此 WSP 时 我不断得到 特征 fb631f6c 2c46 4ab5 b7b3
  • CompileAssemblyFromDom 抛出访问被拒绝异常

    代码 using var codeProvider new CSharpCodeProvider var compilerParameter new CompilerParameters assemblies assemblyName fa
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐