The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Сравнение методов исключения разработки на JavaScript для веб технологий"
Отправлено auto_tips, 07-Дек-21 10:21 
++ Преамбула

К [[https://www.opennet.ru/opennews/art.shtml?num=56140 статье]] о публикации [[https://pusa.catlair.net фрэймворка Pusa]] авторы получили полезные для дальнейшей работы над проектом отклики. Наиболее важным нам показалась беседа с создателем проекта [[https://github.com/fomkin/korolev Korolev]], реализующего аналогичную парадигму но принципиально иными методами.

Так как, у нас была возможность не только познакомится с исходным кодом Korolev, но и пообщаться с его создателем, считаем возможным показать принципиальное отличие концепции Pusa, именно на примере Korolev.

++ Задача

Оба проекта реализуют разработку web-приложений без необходимости написания клиентского кода JavaScript  конечным разработчиком.

++ Решение Korolev

Реализация scala. При открытии страница браузер клиента скачивает базовый JavaScript-код приложения. Тот открывает WebSocket-соединение с сервером Korolev. На стороне сервера формируется DOM-структура. Клиентские события направляются через websocket на сервер. Получив очередное событие Korolev выполняет необходимую бизнес логику, вносит изменения в DOM на стороне сервера, далее выполняется построение дифференциального обновления которое направляется на клиент. Благодаря оптимизированному механизму построения дифов, эффективность обработки DOM на стороне Korolev высока. Клиентское приложение получив изменения, отражает их в DOM браузера. Пользователь получает необходимый контент.


++ Решение Pusa

Реализация PHP. При старте приложения браузер скачивает базовый JavaScript-код приложения Pusa (6кб). Приложение выполняет AJAX запросы на основе событий браузера. Каждый запрос содержит данные о событийном DOM-элементе и служебную информацию. Сервер Pusa получая очередное событие, определяет и выполняет контроллер с бизнес логикой, и возвращает набор инструкций согласно протоколу Pusa (https://gitlab.com/catlair/pusa/-/blob/main/site/pusa/src/la... как результат AJAX запроса. JavaScript-клиент отрабатывает полученные инструкции, внося изменения в клиентский DOM. Пользователь получает необходимый контент.

++ Общее в концепциях

** Клиентские приложения требуют JavaScript как основу работы приложения.
** От разработчика не требуется работа над клиентским кодом JavaScript ни в каком виде.
** Бизнес логика и работа с DOM выполняется на стороне сервера на имеющихся средствах разработки.
** Клиент получает необходимый контент.
** Код приложения находится в безопасном серверном окружении и не присутствует на стороне клиента.
** Клиентский код JavaScript   минималистичен и стабилен.
** С разработчика снимается проблема сериализации при передаче данных.


++ Особенности Korolev

** Сервер обладает отражением DOM-объекта для каждого клиентского соединения.
** Korolev направляет клиенту дифференциальный, хорошо оптимизированный контент.
** Korolev использует WebSocket, как основной высокопроизводительный метод взаимодействия.
** В силу архитектуры сервер Korolev имеет возможность инициировать изменение клиентского контента.

++ Особенности Pusa

** Сервер не требует и не подразумевает хранение состояния клиента, те реализуется чистый [[https://ru.wikipedia.org/wiki/REST REST]].
** Pusa направляет клиенту команды в ответе AJAX через XMLHttpRequest, что значительно снижает требования к браузеру.
** Pusa относится к клиенту как удаленному конечному автомату без обратной связи.
** Технология Pusa не имеет возможности инициировать событие со стороны сервера. Инициатором событий является исключительно клиент (таймер возможен).

[[IMG /opennews/pics_base/0_1638858402.jpg]]


++ Выводы.

Технологии, основывающиеся на необходимости хранения состояния клиента потенциально ограничены ростом клиентских подключений, и как следствие предполагают централизацию аппаратных ресурсов.  Возможность инициации событий со стороны сервера является необходимой опцией для внутренних решений. Три перечисленных фактора определяет рынок корпоративных решений, как наиболее привлекательный для технологий, аналогичных Korolev. Качественная оптимизация Korolev явно демонстрируют стремление к минимизации накладных расходов на хранение клиентских состояний, но не устраняет их.

Pusa, принципиально следуя парадигме чистого REST, нацелена на рынок открытых решений, со значительным количеством клиентских подключений. Pusa предполагает использование множества независимых инстансов, с минимальными требования, без необходимости их общего взаимодействия. Запросы одного и того же пользователя к Pusa могут обрабатываться различными инстансами в рамках одной сессии, что позволяет использовать решение под значительными нагрузками.


++ Ссылки

*** [[https://github.com/fomkin/korolev Korolev]]
*** [[https://pusa.catlair.net Pusa]]
*** [[https://pusa.catlair.net/?image=images/KorolevPusa.jpg сравнительная схема]]
*** [[https://www.opennet.ru/opennews/art.shtml?num=56140 Анонс публикации Pusa]]


URL: https://github.com/fomkin/korolev
Обсуждается: https://www.opennet.ru/tips/info/3197.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру