2012-02-06 89 views
2

我们正在构建一个支持由第三方开发人员编写的插件(必须导入/导出由我们定义的特定接口)的应用程序。我们计划使用MEF来检测指定目录中是否存在这些插件。控制第三方插件组件

我可以对插件开发人员施加什么级别的控制以最大限度地减少写入不良的组件可能导致内存泄漏(影响稳定性)和/或使处理器(影响性能)超出主机应用程序的可能性?

我已经使用了诸如ANTS内存和性能分析应用程序等工具来追踪和诊断出现的问题,但是考虑到应用程序可能运行在我们没有的环境中,可能无法做到这一点控制。

回答

0

我可以在插件开发者处以何种程度的控制,以尽量减少写的不好的组件可能导致内存泄漏的可能性(影响稳定性)和/或霸占我们的主机应用的处理器(影响性能)?

您将不得不在单独的子进程中加载​​插件,然后通过WCF或其他某种形式的IPC与该进程进行通信。这样你可以监控资源使用情况并在必要时杀死插件。

MEF不会帮你解决这个问题。但也许有可能编写自己的ExportProvider实现来处理一些或全部。

编辑:PiotrWłodek的IsolatingCatalog看起来很有希望。

+0

感谢您的回复 - 我会看看它是否符合我的需求。 – pete757 2012-02-09 16:08:28

+0

有关IsolatingCatalog的信息很有用,虽然我怀疑性能成本(在我的应用程序中)可能会排除跨进程或跨应用程序域方法。 – pete757 2012-02-21 17:20:14