谷歌Chrome Native Client与插件或扩展程序相比

Pet*_*son 2 plugins google-chrome google-chrome-extension google-nativeclient

我是Native Client的新手; 也是插件/扩展的新手.令我印象深刻的是插件/扩展在某些方面比NaCl"更好":

  1. 可以在任何地方/无论如何编译插件/扩展来生成普通的旧DLL或.so; NaCL需要仅由NaCl工具链生成的二元化.

  2. 插件/扩展程序可以跨浏览器移植(例如,它应该在FIrefox和更多版本以及Chrome中运行).这是因为插件/扩展符合Netscape 3中引入的事实标准.

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

Mik*_*est 7

总之一句:安全.NPAPI插件是不可拆卸的.它们是本机代码,运行在进程外以及浏览器的沙箱之外,这意味着它们可以在您的计算机上执行任何操作.

另一方面,NaCl在Chrome的沙箱中运行,并且仅提供对定义良好的API集的访问.聪明的编译技巧确保代码不会爆发并(有​​意或无意)恶意执行不受信任的方法.

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


smo*_*gan 7

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

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