Может ли веб-приложение Native Client создавать окна и общие элементы управления во время выполнения?

Я говорю о нативном клиенте для Google Chrome...
Разработчики утверждают, что он может запускать нативный код, скомпилированный из c/c++, в песочнице браузера.
Они описывают много вещей, но никогда не указывают на то, что мне нужно... Итак, если я создаю окно в своем приложении с помощью CreateWindow, появится ли это окно, когда мое приложение Native Client загружается в браузер?


person Kosmo零    schedule 19.01.2013    source источник


Ответы (2)


Короче говоря, нет. Две ключевые вещи, которые нужно знать о приложениях, использующих собственный клиент в Chrome:

  1. Они не зависят от платформы (зависящие от платформы вызовы запрещены).
  2. Они по-прежнему являются веб-приложениями с ограничениями и возможностями, которые с этим связаны.

Если бы собственный клиент разрешал вызовы, специфичные для операционной системы, такие как CreateWindow, он больше не был бы независимым от платформы (и также представлял бы угрозу безопасности).

Вместо этого Native Client предоставляет набор независимых от платформы API, которые называются Pepper или PPAPI. то же самое для всех поддерживаемых операционных систем (в настоящее время это Mac OS, Windows, Linux и Chrome OS). Как уже упоминалось, приложения, использующие собственный клиент, по-прежнему являются веб-приложениями, поэтому Pepper предоставляет те же возможности и ограничения, которые вы ожидаете от JavaScript. Например, вы можете получить URL-адреса или запросить у пользователя разрешение на полноэкранный режим, но вы не можете получить доступ к любому произвольному файлу из локальной файловой системы (возможно изолированное локальное хранилище для конкретного приложения; например, если пользователь загружает файл для использования приложением) .

Перенос существующей кодовой базы C или C++ в Native Client очень похож на перенос на другую операционную систему. Вместо использования, скажем, вызовов API Windows ваше приложение должно использовать вызовы API Pepper.

Для дополнительной информации стоит отметить, что Пакетные приложения Chrome могут запрашивать доступ к гораздо более широкий набор API в пространстве имен chrome.*. Эти API включают в себя USB, сокеты, открытие новых окон и многое другое. Пакетное приложение Chrome по-прежнему не сможет совершать вызовы, специфичные для ОС, но у них есть доступ к еще нескольким API, все из которых не зависят от платформы.

Короче говоря, если ваше приложение можно заставить работать с Pepper API и chrome.* API, вы можете написать его на собственном клиенте и JavaScript, и у вас будет приложение, которое будет работать одинаково во всех четырех упомянутых операционных системах. над. Если ваше приложение не может работать с этими API, Native Client в Chrome — не лучший выбор.

person West 39th    schedule 19.01.2013
comment
Хорошо объяснил. Спасибо! - person Dev N; 17.09.2014

Кажется, нет. Это немного связано: http://ssj-gz.blogspot.com/2013/01/emscripten-qt-progress-faster-better.html. Однако он переведен на javascript и только для QT. И медленно.

person kersurk    schedule 22.01.2013