Понятие платформ для веб-приложений
Прежде чем приступать к сравнению этих двух платформ Rust, давайте сначала разберёмся, что в принципе собой представляют платформы для веб-приложений.
Для создания веб-приложений, таких как веб-сервисы, веб-ресурсы и интерфейсы прикладного программирования, нужна платформа, с помощью которой можно осуществлять разработку этих приложений. Платформы представляют собой сочетание инструментов, вспомогательных средств и библиотек, которые позволяют эффективно создавать, тестировать и запускать приложения. Используя платформы, мы можем руководствоваться стандартным набором правил, создавать и развёртывать веб-приложения, а также автоматизировать расход вычислительных ресурсов, связанных с типичными действиями, выполняемыми в процессе веб-разработки.
Платформы для веб-приложений Rust
Rust поддерживает несколько платформ для веб-разработки, и вот их перечень:
- Rocket
- Actix
- Warp
- Yew
- Nickel
- Gotham
- 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 — это целиком и полностью зависит от ваших предпочтений, а также от того, какое приложение вы хотите создать.
Читайте также:
- Использование SQLite с Rust и Actix Web (с тестами)
- Parcel + Rust и WASM = идеальный ромком
- Кросс-компиляция программ Rust для запуска на маршрутизаторе
Перевод статьи Sidra Shakeel: Actix or Rocket? Comparing Two Powerful Rust Web Frameworks