4

我阅读了 .net MEF(托管扩展框架)和 MAF(System.AddIn),但我对他们的在线评论感到困惑。

虽然 MEF 似乎比 MAF 更新且更具吸引力。我不明白我们如何使用 MEF 将扩展链接到 .NET 应用程序。例如,在 MAF 中,我可以开发我的整个扩展逻辑 (AddIn),其中包括:

  • 主 dll,比如 X.dll
  • X.dll 引用的所有 dll
  • X.dll 需要的外部资源,例如数据库、一些文本文件……等

然后主机可以简单地调用 X.dll 中的方法并等待结果。

另一方面,MEF 要求所有 DLL 都位于同一文件夹中,例如“插件”,因此 X.dll 必须位于“插件”中才能被发现和链接,所以我的问题是我们如何嵌入所有X.dll 完成来自主机的传入请求所需的资源?

我真正的问题是:如果一个团队要设计一个主机应用程序,它的处理能力可以通过依赖其他团队开发的扩展或简单地从互联网上下载和安装来扩展,MEF 在这样的项目中是一种有效的技术吗?还是团队应该坚持使用 MAF?

PS:我的问题不在于哪一个在安全性方面更好......等等。相反,我更感兴趣的是找出 MEF 是否允许连接需要在程序集周围使用自己的外部资源的程序集,例如拼写检查扩展,需要一些文本语料库和启发式数据库,这两个资源是扩展需要的,但主机本身不需要

此外,在我之前的示例中,如果 X.dll 需要 Y.dll 才能运行,我不能简单地将两个 dll 都放在“Plugins”文件夹中,因为 y.dll 不是扩展名。

4

0 回答 0