2009-12-12 85 views
4

我正在研究第三方开发人员可以编写插件的应用程序。我一直在看管理扩展性框架,这似乎是正确的路要走。带有托管扩展框架的沙盒插件

有一件事,我想阻止插件自由地访问应用程序的其他部分(调用单例等),但想限制为通过某个接口进行通信,理想情况下,每个插件必须“请求”不同的权限诸如访问其他插件和用户数据之类的东西,是否有一种很好的方法可以实现这一点?

我能想到的,否则唯一的事情是有传递给每个方法的安全绳和混淆地狱的代码,但它似乎是一个丑陋的解决方案:P

回答

4

你需要的是一个新的AppDomain到成为你的插件的沙盒,但我不认为MEF支持此时将出口加载到单独的AppDomain(如果不是这种情况,我肯定有人会纠正我)。

如果这是您的严重问题,请考虑使用System.Addin名称空间中的位,并参阅Activation, Isolation, Security, and Sandboxing上的此部分以获取更多信息。这是MEF的一个更强大和更安全的替代方案,但是远没有灵活性。

更新:肯特Boogaart有一个blog post您展示如何使用MEF和MAF在一起。