1

ネイティブリソースにアクセスするための共有ライブラリにバインドするウィンドウレスNPAPIプラグインを作成しました。プラグインは、Firefoxブラウザで実行されているWebアプリケーションによってロードされます。 最近、私はネット上で、Java Script拡張機能を使用して、ネイティブコード関数呼び出しを行うこともできることを確認しました。しかし、これらのJava Script拡張機能はブラウザ固有のものです。パフォーマンスに関するJavaScript拡張機能とNPAPIプラグインの違い

ネイティブコードを呼び出すためにNPAPIプラグインの代わりにJava Script拡張機能を使用すると、ネイティブライブラリAPI呼び出しのレイテンシが向上しますか?

注意:私のクエリは一般的なもので、Firefoxブラウザ専用です。

答えて

1

このような質問には一般的な答えはなく、さまざまなブラウザで実装されているメカニズムには共通点がありません。

Firefoxjs-ctypesからネイティブライブラリを呼び出すことができます。このメカニズムは、NPAPIプラグインとの通信よりも軽量でなければなりません。さらに重要なのは、プロセス間通信のオーバーヘッドがないことです(新しいFirefoxバージョンでは、別々のプロセスでプラグインが実行されます)。

Chrome:オペレーティングシステムの機能(ディスク上のランダムな場所にファイルを書き込むなど)にアクセスする唯一の方法は、NPAPI経由であり、Chromeは拡張機能でシステムライブラリを使用することを許可しません。ただし、ネイティブライブラリを使用して実行を高速化し、このコードをサンドボックス内で実行しても構わない場合は、native clientが役立ちます。サンドボックス化された実行のために、おそらくNPAPIプラグインよりも遅くなりますが、拡張機能がインストールされているときに巨大な恐ろしい警告が表示されることはありません。

Safari:私が知っていることから、Safariではネイティブライブラリnot even via NPAPI pluginsを使用できません。

Internet Explorer:MSIE 9.0以降、Internet ExplorerにはJavaScriptベースの拡張機能に似たものはありません。

+0

返信いただきありがとうございます。以前は拡張機能を使ったことが一度もなかったので、私はこの質問をしています。 NPAPIプラグインはページのメモリにロードされるため、ページが破棄されるとアンロードされます。拡張の場合、拡張モジュールのメモリにロードされるため、ブラウザのインス​​タンスがライブである限り、生き残りますか?この初心者の質問に申し訳ありません。 – Souvik

+0

Safari拡張機能はNPAPIプラグインを使用できます。しかし、そのようなプラグインはエクステンションに含めることはできません。別途インストールする必要があります。 – anfilat

+0

@anfilat:それは私が言ったことです - 基本的に、拡張機能には低レベルのアクセスを得る方法がありません。プラグインがすでにシステムに存在する場合は、プラグインを使用することができます(Webページと同じように)が、実際には複雑なインストールのためにほとんどの拡張機能のための実用的なアプローチではありません。 –

関連する問題