2011-09-21 96 views
2

我是谷歌搜索和搜索插件架构,我对如何实现它的一般知识满意。现在我进一步寻找沙盒体系结构。基本上我的意思是带有插件的应用程序,在插件中崩溃不会导致整个应用程序崩溃,插件可以重新加载。 我无法找到很好的文档。 我知道Firefox实现它(崩溃Flash插件不影响整个FF的事情,可以重新加载) 谢谢!沙盒插件架构

+3

我认为你需要插件在自己的进程中运行,这样它就不会在主机应用程序崩溃时拆除它。不过,这要求插件和主机应用程序之间的通信是进程间通信。 – sbi

+2

@sbi,这应该是一个答案 – bdonlan

+0

@bdonlan:不,这不值得。 (去吧,如果你认为。) – sbi

回答

7

您可以拥有一个真正的沙盒体系结构,其中插件无法直接崩溃父应用程序的进程或损坏其内存的唯一方法是将其放置到单独的OS进程中,并具有单独的内存空间。执行此操作时,您需要依赖OS的进程间通信工具(管道,套接字,远程过程调用,内存映射文件,共享内存,同步对象等)与插件进行交互。

+0

当插件很多时会使应用程序变得复杂。假设有20个插件和所有内存空间和进程间通信。至少如果可能有两个进程运行一个托管所有插件和其他核心应用程序。 –

+2

是的,如果插件可以互相交互,那么您可以为所有插件都有一个插件主机进程。如果插件主机死了,它可能会使恢复插件主机更复杂 - 使用Firefox比较,这意味着如果插件运行异常并取消托管进程,所有使用任何插件的打开页面都将具有以某种方式重置,而不是仅重置一个页面/插件实例。 – vercellop

+0

Mh!我认为你的答案没有办法。在我接受它作为答案之前,让我等待是否有其他选择。谢谢vercellop –