【问题标题】:Google Chrome Native Client compared with plugin or extension [closed]Google Chrome Native Client 与插件或扩展程序的比较 [关闭]
【发布时间】:2012-03-15 07:21:30
【问题描述】:

我是 Native Client 的新手;也是插件/扩展的新手。让我印象深刻的是,插件/扩展在某些方面比 NaCl“更好”:

  1. 可以在任何地方/任何方式编译插件/扩展以生成普通的旧 DLL 或 .so; NaCl 需要仅由 NaCl 工具链生成的二进制文件。

  2. 插件/扩展可以跨浏览器移植(例如,它应该在 FIrefox 等以及 Chrome 中运行)。这是因为插件/扩展遵循 Netscape 3 中引入的事实上的标准。

如果这一切都是真的,那么 NaCl 相对于插件/扩展的优势是什么?

【问题讨论】:

  • 提示:Windows 不是唯一的操作系统 ;)

标签: google-chrome plugins google-chrome-extension google-nativeclient


【解决方案1】:

一句话:安全。 NPAPI 插件是不可沙盒的。它们是本机代码,在进程外和浏览器沙箱之外运行,这意味着它们可以在您的机器上执行任何操作。

另一方面,NaCl 在 Chrome 的沙箱中运行,并且只提供对一组明确定义的 API 的访问。巧妙的编译技巧可确保代码不会中断并开始(有意或无意地)恶意执行不受信任的方法。

http://www.chromium.org/nativeclient/getting-started/getting-started-background-and-basics 是概述差异的好资源。我建议至少略读一下,以了解 NaCl 试图实现的目标。

【讨论】:

  • 谢谢你的好回答,迈克。
  • 不过,我还是不明白。毕竟,运行的是我的代码,所以没有安全风险。此外,NaCl 作为插件运行。所以,正如我所说,我不明白。
  • @PeteWilson:安全风险是 A)您的代码有错误 B)您的代码是恶意的(如果您计划让其他人使用您的扩展程序)。此外,在 Metro 模式下运行 Chrome 时,NPAPI 不起作用。
【解决方案2】:

首先,您一直在说“插件/扩展”,但扩展和 NPAPI 插件完全不同。 NPAPI 插件是二进制的,并且(如您所说)是跨浏览器的。扩展是每个浏览器的;每个浏览器都有自己的一组扩展 API 和功能,但它们通常是用 HTML/CSS/JS 编写的。

至于您的问题:除了另一个答案中提到的非常重要的安全方面:平台可移植性。如果你想在 NPAPI 中进行绘图、事件处理、播放声音等,你需要编写三个完全不同的实现——Windows、Mac 和 Linux——并且你需要提供三个单独的插件副本。 NaCl/Pepper 对一切都有平台中立的抽象。

【讨论】:

  • 我明白了,谢谢。我没有在文档中了解有关平台中立抽象的部分。非常重要,当然。
猜你喜欢
  • 2013-12-25
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 2020-04-23
  • 2011-04-26
  • 1970-01-01
相关资源
最近更新 更多