我们正在构建一个支持第三方开发人员编写的插件(必须导入/导出我们定义的某些接口)的应用程序。我们计划使用MEF来检测指定目录中是否存在这些插件。
我可以对插件开发人员施加什么级别的控制,以最大程度地降低编写错误的组件可能导致内存泄漏(影响稳定性)和/或占用主机应用程序的处理器(影响性能)的可能性?
我已经使用ANTS内存和性能分析应用程序等工具在问题发生时跟踪和诊断问题,但鉴于应用程序可能在我们无法控制的环境中运行,可能无法始终执行此操作。
答案 0 :(得分:0)
我可以对插件开发人员施加什么级别的控制,以最大程度地降低编写错误的组件可能导致内存泄漏(影响稳定性)和/或占用主机应用程序的处理器(影响性能)的可能性?
您必须在单独的子进程中加载插件,然后通过WCF或其他形式的IPC与该进程通信。这样,您可以监视资源使用情况并在必要时终止插件。
MEF对此没有帮助。但也许有可能编写自己的ExportProvider
实现来处理部分或全部内容。
编辑:PiotrWłodek的IsolatingCatalog看起来很有希望。