Новости из Блогов Сравнение методов исключения разработки на JavaScript для веб технологий

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 10 Dec 2021.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,482
    Likes Received:
    7,062
    Reputations:
    693
    Преамбула

    К статье о публикации фрэймворка Pusa авторы получили полезные для
    дальнейшей работы над проектом отклики. Наиболее важным нам показалась беседа с
    создателем проекта 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/language_ru/man/pusa_protocol.md),
    как результат AJAX запроса. JavaScript-клиент отрабатывает полученные
    инструкции, внося изменения в клиентский DOM. Пользователь получает необходимый контент.

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

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


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

      Особенности Pusa
    • Сервер не требует и не подразумевает хранение состояния клиента, те
      реализуется чистый REST.
    • Pusa направляет клиенту команды в ответе AJAX через XMLHttpRequest, что
      значительно снижает требования к браузеру.
    • Pusa относится к клиенту как удаленному конечному автомату без обратной связи.
    • Технология Pusa не имеет возможности инициировать событие со стороны
      сервера. Инициатором событий является исключительно клиент (таймер возможен).

      [​IMG]


      Выводы.

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

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


      Ссылки
    06.12.2021 , Автор: Still Swamp
    https://www.opennet.ru/tips/3197_frontend_ajax_rest_websocket_javascript_pusa_korolev.shtml
     
    _________________________
Loading...