基于MEF

时间:2016-09-27 21:03:54

标签: c# .net mef extensibility maf

我读了.net MEF(Managed Extensibility Framework)和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不是扩展名。

0 个答案:

没有答案