从内存加载和沙箱插件

时间:2013-09-27 12:46:40

标签: c# plugins mef appdomain maf

我正在开发一个Windows Azure网站,该网站根据用户输入修改一些数据并将数据返回给用户。所有数据修改都由每个用户插件处理,这些插件作为blob存储在database中。

目前,当用户请求某些数据时,我

这种方法运行得相当好,并允许我为每个只为其数据操作的用户编写新的插件。

但是,从长远来看,我希望允许每个用户根据接口编写自己的插件,并通过将它们上传到数据库来安装它们。因此,我需要一些方法来限制插件可以做什么和不能做什么。

我已经玩弄了基于AppDomains的自定义解决方案,但我还没有找到一种方法让它按照我想要的方式运行。我还查看了Managed Extensibility FrameworkManaged Add-in Framework,但它们似乎都没有完全符合条件,MEF不适合沙盒而MAF不支持从内存中加载插件

  • 我的问题是否有更多或更少的现成解决方案?
  • 如果没有,我应该如何处理自己的写作;什么是我的主机应用程序,最终的“插件运行器/沙箱”,任何接口,合同,适配器等之间的依赖关系的良好整体结构,以及用户提供的插件?
  • 我是否应该将插件程序集本地保存在临时位置以简化解决它们的工作并允许我使用任何一个可用的框架?
  • 你能否指出我的阅读材料方向会使任务看起来更易于管理(或者更少,如果我只是放弃沙盒用户提供的插件的整个想法)?

0 个答案:

没有答案