1

Я написал плагин NPAPI без окон, который привязывается к общей библиотеке для доступа к моим родным ресурсам. Плагин загружается веб-приложением, запущенным в браузере Firefox. В последнее время я видел в сети, что с помощью расширений Java Script можно также создавать вызовы на основе собственных кодов. Но эти расширения Java Script специфичны для браузеров.Разница между расширениями JavaScript и плагинами NPAPI по производительности

Возможно, кто-нибудь скажет мне, что если я использую расширение Java Script вместо плагина NPAPI для вызова моего собственного кода, будет ли какое-либо повышение производительности с точки зрения задержек при создании вызовов API библиотеки?

Обратите внимание: мой запрос является общим и не предназначен специально для браузера Firefox.

ответ

1

Существует не общий ответ на такой вопрос, механизмы, реализованные разными браузерами, не имеют ничего общего.

Firefox: Натуральная библиотека может быть вызвана через js-ctypes. Этот механизм должен быть более легким, чем связь с плагином NPAPI. Еще важнее то, что у вас нет накладных расходов на межпроцессное общение (новые версии Firefox запускают плагины в отдельных процессах).

Хром: AFAIK единственный способ доступа к функциональности операционной системы (например, запись файлов в произвольное место на диске) через 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: Это то, что я имел в виду - в принципе, расширение не имеет никакого способа получить доступ на низком уровне. Если подключаемый модуль уже существует в системе, он может его использовать (как это делает веб-страница), но это не очень практичный подход для большинства расширений из-за сложной установки. –