【问题标题】:C# Source Code Examples that make use of System.Addin (MAF)?使用 System.Addin (MAF) 的 C# 源代码示例?
【发布时间】:2011-02-26 10:20:35
【问题描述】:

就像看看其他人如何使用 MAF:

  • 什么是合同?
  • 同时使用 IoC 和 MAF?
  • 插件如何相互通信?
  • MAF 如何帮助构建 winforms 应用程序? ...

【问题讨论】:

  • 我知道 Systen.AddIn 命名空间,但之前没有看到它被称为 MAF。因此,为了确保您不是在谈论 MEF,即 Microsoft 可扩展性框架?
  • 你可以试试 google "maf mef c#" :)

标签: c# winforms maf


【解决方案1】:

正如 cmets 中已经暗示的那样,面对更易于使用的改进 API,System.AddIn 在很大程度上被认为已过时。它位于 System.ComponentModel.Composition 中,通常称为 MEF(Managed Extensibility Framework 的缩写)。我建议你跳过 MAF,直接跳到使用 MEF。

FWIW,Visual Studio 2010 使用 MEF 动态扩展 UI,既适用于 VS 附带的功能,也适用于第 3 方提供的扩展。

【讨论】:

  • 可以在这里找到 MEF 和 MAF 之间差异的一个很好的总结:stackoverflow.com/questions/835182/… 以及 MAF 远未过时的场景的一些论据。
  • MAF 实际上只是一种使用 AppDomain 更结构化的工作方式,而 MEF 是关于组合的。我同意 MAF 可能仍然有它的用途,但是完全隔离对性能非常不利,以至于在大多数实际用例中,MAF 并不是一个真正需要考虑的选项。由于 Windows 调度 UI 事件的方式,它也不可能对 UI 组件使用 MAF。
  • 是的,MAF 是一种更加结构化和更加“插件”的方式。虽然性能会下降,但很多情况下 MAF 都能很好地工作,尤其是当您冒着插件崩溃的风险或想要即时重新加载时。 Visual Studio 将 MAF 广泛用于其插件架构 afaik。也可以使用通过 MAF 加载的 UI 组件,请参阅 blogs.msdn.com/b/clraddins/archive/2007/08/06/… 示例。
  • 看起来确实可以将 MAF 用于 UI 组件,我不知道。也许他们也采用了一些性能技巧,但 AppDomain 切换过去非常慢。可能不得不再看一下 MAF,这样我就不会到处乱说它了 :) 谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-24
  • 2012-06-26
  • 1970-01-01
相关资源
最近更新 更多