2

Native Client は初めてです。プラグイン/拡張機能も初めてです。いくつかの点で、プラグイン/拡張機能は NaCl よりも「優れている」と思います。

  1. プラグイン/拡張機能をどこでも/とにかくコンパイルして、プレーンな古い DLL または .so を生成できます。NaCL には、NaCl ツールチェーンによってのみ生成されたバイナリが必要です。

  2. プラグイン/拡張機能は、ブラウザー間で移植可能です (たとえば、Chrome だけでなく、FIrefox などでも動作するはずです)。これは、プラグイン/拡張機能が Netscape 3 で導入された事実上の標準に準拠しているためです。

それがすべて本当なら、プラグイン/拡張機能に対する NaCl の利点は何ですか?

4

2 に答える 2

7

一言で言えば:セキュリティ。NPAPIプラグインはサンドボックス化できません。これらはネイティブコードであり、プロセス外でブラウザのサンドボックスの外で実行されます。つまり、マシン上で何でも実行できます。

一方、NaClはChromeのサンドボックス内で実行され、明確に定義されたAPIのセットへのアクセスのみを提供します。巧妙なコンパイルトリックにより、コードが壊れて(意図的または偶発的に)信頼できないメソッドを悪意を持って実行し始めることがなくなります。

http://www.chromium.org/nativeclient/getting-started/getting-started-background-and-basicsは、違いの概要を説明するための優れたリソースです。NaClが何を達成しようとしているのかを理解するために、少なくともそれをスキミングすることをお勧めします。

于 2012-03-15T08:43:53.787 に答える
7

まず、「プラグイン/拡張機能」と言い続けていますが、拡張機能と NPAPI プラグインはまったく別のものです。NPAPI プラグインはバイナリであり、(あなたが言ったように) クロスブラウザーです。拡張機能はブラウザーごとです。各ブラウザーには独自の拡張 API と機能のセットがありますが、通常は HTML/CSS/JS で記述されています。

あなたの質問については、別の回答で言及されている非常に重要なセキュリティの側面に加えて、プラットフォームの移植性です。NPAPI で描画、イベント処理、サウンドの再生などを行いたい場合は、3 つのまったく異なる実装 (Windows、Mac、および Linux) を作成する必要があり、プラグインの 3 つの個別のコピーを出荷する必要があります。NaCl/Pepper には、すべてのプラットフォームに依存しない抽象化があります。

于 2012-03-15T09:21:53.607 に答える