Pull to refresh

Comments 17

> Мы тащим только прослойку между каким-то браузером и какой-то ОС

Мне кажется одна лишь эта фраза сразу говорит нам, что подводных камней там полно.
Да уж, если «какой-то браузер» ещё не очень пугает (м.б. зря), то «какая-то ОС» — совсем беда. По-хорошему, нужно сделать единообразную прослойку ко всем функциям каждой ОС.

Так себе и представил ситуацию: ваяем на Нейтралино систему, вгрохали десяток человеколет, остаётся маленький штрих, без которого Заказчик не принимает — чтобы эта штука задействовала КриптоПро через виндовозный CryptoAPI. Плюс позарез оказалось нужно взаимодействовать с железячкой, для которой есть DLLка.

Впрочем, если сделают возможность приделывать к серверу написанные на плюсах плагины, то можно будет и выкрутиться.
> если сделают возможность приделывать к серверу написанные на плюсах плагины, то можно будет и выкрутиться.

Проблема в том, что под каждую ОС свой сервер. А если вы делаете под одну ОС, то возникает вопрос почему не делаете нативно, раз умеете писать на плюсах плагины)
Предположим, затея взлетела, и писать кроссплатформенные штуки на этой штуке оказалось фантастически удобно. Сваяли большую красивую штуку, и тут это гадское КриптоПро. Делаем по-быстрому шлюз на CryptoAPI, и для Виндовса кнопка подписания электронной подписью появляется. А на других платформах она, допустим, и не нужна.
В общем объёме кодовой базы проекта этот шлюз порядка одного процента.
А нативно на плюсах, допустим, этот проект тоже можно было бы делать, но за на порядок больший бюджет, которого у Заказчика точно нет.
Впрочем, если сделают возможность приделывать к серверу написанные на плюсах плагины, то можно будет и выкрутиться.

может проще будет использовать Chromium Embedded Framework?
UFO just landed and posted this here
т.е. node.js работает на удалённом сервере и всё крутится на нём, используется его файловая система, память и т.п., а ты только через браузер смотришь на результат.

Веб называется. Нет ну серьезно, а зачем? То что вы описали по сути обычное веб-приложение.
На счёт сетевых задержек, есть такой сервис playkey, он позволяет играть в игры на облаке, я так понимаю, передавая в браузер видео достаточно хорошего качества и принимая события с устройств ввода и вроде ок. Так же на хабре была статья как пробросить иксы в браузер(Вот тут не скажу на сколько оно лагучее).
UFO just landed and posted this here
Годная штука. Меня (как пользователя слаки) электрон отталкивает именно что своей жуткой неюниксвейностью. Очень надеюсь, что и во всякой убунте на правах пакета эта штука тоже приживётся со временем (и несколько тяжеловесное название этому не помешает).

Отсутствие прибитости к хрому тоже скорее в плюс, чем в минус, я может быть старомоден, но написание больших десктопных приложений привязанных к особенностям одного, пусть и самого распространённого броузера по мне — некомильфо. Как то напоминает времена виндовых приложений с использованием MSHTML engine (хотя опенсорсный fb2editor в wine таки запустить можно).

А так — если уж используешь фронтэндерскую технологию — будь добр писать мало-мальски кроссброузерный код, чтобы это можно и в веб выложить, без баннера «сайт доступен только для IE6 Chrome».

Ладно, Atom и VSCode — это уже «реальность данная нам в ощущениях» (хотя я предпочитаю Sublime и, в качестве открытого аналога, TextAdept, полностью переконфигурируемый на lua). Но основное применение js-на-десктопе, как мне представляется, всё же должно быть иным.

Больше похоже на HTML Application.


То есть мы возвращаемся в лехие нулевые и ухищряемся всеми возможными способами, чтобы попасть в тот самый IE 8, который будет стандартным WebView на Windows.
Да, вы правы. В том смысле, что HTA — это как раз пример того, какую роль десктопный JS должен играть. И Neutralinojs выглядит хорошим, годным кроссплатформенным HTA. Однако Electon выглядит чем-то куда боле монструозным.

мы возвращаемся в лихие нулевые и ухищряемся всеми возможными способами, чтобы попасть в тот самый IE 8, который будет стандартным WebView на Windows


В каком Windows? В новых виндах вроде будет клон хромиума в качестве браузера (хотя я то лично окончательно ушёл на Linux ещё в сравнительно благословенные времена Windows 7, сужу по новостям) и мне их Edge (который вроде бы пришёл на смену потомкам IE8) даже как-то жаль (во всяком случае исходники ChakraCore выглядят симпатично).

А так — ухищрения, как по мне, не чрезмерные. HTA? Да — HTA, при том, что броузер (как в общем-то для кроссплатформенного HTA логично) будет зависеть от конкретной версии конкретной ОСи. Ну так пишущий на HTML+JS как-то обязан уметь в кроссброузерность. Иначе лучше взять что-то другое, от Tcl/Tk до Qt (ну и .Net со временем обещает слиться, ага, в экстазе, c Mono и стоть по настоящему кроссплатформенным).

PS. Мне когда-то идея мозилловского XUL-а нравилась, но увы и ах — всё закончилось тем, что сама Mozilla выбросила эту технологию на помойку, и кто и как будет её поддерживать (и будет ли вообще) — сильно не ясно. ActiveState с их Komodo IDE вроде и не пытаются мозилловское ядро актуализировать, превращаясь в лютое legacy (как и Zotero), волчата из MoonChild серьёзным игроком не выглядят… Потому HTA — да, но привязка к любому конкретному броузерному движку — зло.
  1. По поводу памяти — так и не понял, почему должно есть меньше памяти. Ведь браузер или webview или что-то ещё всё-таки запускаются. Единственное, что не запускается — node.js, но тут как раз и минус — теряем стандартные API. Может быть фишка в том, что мы открываем как бы новую вкладку, а не браузер целиком, не тратя память на UI браузера и прочие плюшки? Если да, то Electron не доработан, т. к. это всё должно быть вырезано из браузера для экономии (что впрочем пока не отменяет преимущества Neutralino.js).
  2. Почему бы вместо стандартного браузера не сделать поиск браузеров и выбрать самый лучший? Поиск — очень быстрая операция, долстаточно проверить папки Program files, Program files (x86), AppData/Local и ветку реестра с установленными программами. Вложенные ветки или папки проверять не нужно. После поиска браузера сохранить результат, чтобы второй раз искать не пришлось. Также дать возможность пользователю изменить выбор. А автор приложения просто напишет что-то типа «Требования: установленный Google Chrome версии 62 и более».
  3. Возможно, те задачи, которые решает Neutralino.js, мог бы решать GraalVM (полностью совместимый аналог node.js) + GTK+ либо node.js + GTK+, юзая биндинги. При этом сохранился бы нодовский API, а пользователь бы получил приложение с действительно нативным интерфейсом, занимающее мало места и мало памяти (в несколько раз меньше, чем самое простое приложение на Electron).
Может быть фишка в том, что мы открываем как бы новую вкладку, а не браузер целиком, не тратя память на UI браузера и прочие плюшки?

Так, как раз было, в Chrome с поддержкой Chrome App, но Гугл, к сожалению, по непонятным причинам свернул этот функционал.
Сервер запускается сразу и является настоящим партизаном в тылу ОС. Он умеет хранить данные, открывать файлы, писать в файлы, запускать крипторы shell-команды. Собственно он делает всё, что может понадобиться, предоставляет API для операционки и общается с помощью HTTP с клиентом. Так же он отдаёт клиенту всё, что тот должен отобразить на экране. Достаточно стандартная функциональность для сервера.
А?!
нет вы серьезно? HTTP протокол не делает различий между веб-клиентами! Тем более если ожидается что вебклиентом будет стандартный браузер! Какими механизмами этот всемогущий сервер, дающий доступ ко всему и вся от имени текущего пользователя, будет защищать компьютер от злонамеренных веб-приложений, запущенных в соседней вкладке?

Дополнительные механизмы авторизации? Усложнение механизмов установки приложения (токен авторизации выдается в этот момент) и прочее? Какой-нибудь нестандартный механизм, отличный от уже существующих систем установки приложений на компьютер (linux) Т.е. через некоторое время установка приложений превратится в очередной виндовый да да разрешить принять согласиться некст некст…

О безопасности тут речи конечно же не идёт. Единственное препятствие в режиме window это token, который генерируется 1 раз на сессию и вшивается во все html страницы этим самым сервером.
Узнать этот token не составит труда никому, так что остаётся надеется только на фаервол.

Ну и давайте немного про интеграцию с ОС. Вспомним, что Electron и даже NW предлагали возможность создания своих Context Menu, разрешали скрывать окно и даже создавать иконку в трее. Тут этого всего просто нет. И, учитывая архитектуру решения, никогда не будет. Только браузер и только REST API, только хардкор.


Что касается иконки в трее, то ничто не мешает создавать её из «прослойки»-HTTP сервера.

Что действительно сложно сделать в данной архитектуре — это создание многооконных приложений (которые можно делать в ElectronJS), где приложение может задавать позиции и размер создаваемых окон.

Кстати, судя по активности в githab, проект заброшен (https://github.com/neutralinojs/neutralinojs/pulse/monthly)
Sign up to leave a comment.

Articles

Change theme settings