Rust

Понятие платформ для веб-приложений

Прежде чем приступать к сравнению этих двух платформ Rust, давайте сначала разберёмся, что в принципе собой представляют платформы для веб-приложений.

Для создания веб-приложений, таких как веб-сервисы, веб-ресурсы и интерфейсы прикладного программирования, нужна платформа, с помощью которой можно осуществлять разработку этих приложений. Платформы представляют собой сочетание инструментов, вспомогательных средств и библиотек, которые позволяют эффективно создавать, тестировать и запускать приложения. Используя платформы, мы можем руководствоваться стандартным набором правил, создавать и развёртывать веб-приложения, а также автоматизировать расход вычислительных ресурсов, связанных с типичными действиями, выполняемыми в процессе веб-разработки.

Платформы для веб-приложений Rust

Rust поддерживает несколько платформ для веб-разработки, и вот их перечень:

  1. Rocket
  2. Actix
  3. Warp
  4. Yew
  5. Nickel
  6. Gotham
  7. Iron

У всех у них есть свои достоинства и недостатки. Давайте рассмотрим плюсы и минусы двух платформ, ставших самыми популярными благодаря своей целостности и полноте: сначала обсудим достоинства и недостатки платформы Rocket, а затем — Actix.

Rocket

Rocket — одна из самых зрелых платформ, доступных на Rust. На этой платформе вы можете писать быстрые и безопасные веб-приложения, не опасаясь потерять в скорости, гибкости или удобстве использования.

Подробнее о платформе Rocket можно узнать из её документации.

Достоинства:

  • Простота в использовании — средства генерации кода Rust широко используются для работы с чистым API.
  • Строки запроса — Rocket облегчает работу с параметрами и строками запроса.
  • Потоковая передача — размер не проблема, ведь Rocket выполняет потоковую передачу всех входящих и исходящих данных.
  • Шаблонизация — Rocket имеет встроенную поддержку шаблонов.
  • Возможность расширения — создавайте свои собственные примитивы и любое приложение на Rocket сможет их использовать.
  • Типобезопасность — Rocket проверяет соответствие типов URL-адресов маршрутов, т.е. он гарантирует, что ошибки несоответствия типов сведены к минимуму.
  • Отсутствие стереотипного кода — нет необходимости в стереотипном коде, ведь для чистого API достаточно использования средств генерации кода Rust.
  • Тестировочная библиотека — используя встроенную библиотеку для тестирования, Rocket легко запускает в приложениях модульные тесты.
  • Среды конфигурирования — вы можете сконфигурировать приложение под собственные цели в среде разработки, среде обкатки и эксплуатационной среде.
  • Cookies — беспроблемный просмотр, добавление и удаление файлов cookie с шифрованием или без него.
  • Вызовы, предусмотренные интерфейсом API — со встроенной поддержкой JSON. Получая Deserialize или Serialize, вы можете соответственно получать или возвращать JSON.
  • Устранение ошибок в форме — упрощённое устранение ошибок в форме, в ходе которого неверные запросы в форме отфильтровываются во избежание повреждения кода. Получая FromForm для своей структуры, вы можете дать знать Rocket, какой параметр использовать. Затем платформа проанализирует и проверит запрос в форме, создаст структуру и вызовет вашу функцию.

Недостатки:

  • Nightly — единственный недостаток платформы в том, что она работает только на Nighty-версии Rust.

Пример кода:

Ниже приведён простенький код «Hello World!», который позволит вам начать работать с Rocket:

Если перейти на http://localhost:8000/hello/Sidra/26 , получим следующий вывод:

Hello, 26 year old named Sidra!

Actix

Actix — это платформа с серверной визуализацией. Это означает, что процесс создания и обслуживания приложения осуществляется с сервера, когда страница запрашивается пользователем. Архитектура основана на очень мощной системе акторов Rust. Она хорошо подходит для написания сервисов, имеющих логику более высокого уровня сложности.

Чтобы вам было легче приступить к работе, у Actix стереотипный код, который может либо помочь быстро освоиться и включиться в работу, либо будет слишком сложным для создания простого приложения. Это отличная платформа с очень хорошей документацией, доступной даже для самых зелёных разработчиков.

Достоинства:

  • Типобезопасность — так же как и Rocket, Actix обеспечивает типобезопасность и гарантирует, что ошибки несоответствия типов сведены к минимуму.
  • Невероятная быстрота — благодаря мощной системе акторов платформа работает на очень больших скоростях.
  • Широкая функциональность — WebSockets, HTTP/2, конвейеризация, журналирование и другие встроенные функции.
  • Возможность расширения — создавайте свои собственные библиотеки и любое приложение на Actix сможет их использовать.

Недостатки: на сегодняшний день недостатков не выявлено.

Пример кода:

Ниже приведён простенький код «Hello World!», который позволит вам начать работать с Actix:

Если перейти на http://localhost:8000/, получим следующий вывод:

Hello World!

А перейдя на http://localhost:8000/name, увидим:

Hello name!

Заключение

Возможно, после прочтения этой статьи вы так и не решили для себя, какая из этих двух платформ для веб-приложений на Rust лучше, зато теперь вы знаете, какие цели с их помощью могут быть достигнуты и как. Использовать Rocket или Actix — это целиком и полностью зависит от ваших предпочтений, а также от того, какое приложение вы хотите создать.

Читайте также:


Перевод статьи Sidra Shakeel: Actix or Rocket? Comparing Two Powerful Rust Web Frameworks

Предыдущая статьяПрекратите использовать конфигурационные файлы JSON
Следующая статьяАвтоматизация Doom с глубоким Q-обучением: реализация в Tensorflow