За останнє десятиліття з’явилася низка вебфреймворків Rust, кожна з яких створена з дещо різними користувачами та потребами функцій. Усі вони виграють від безпеки типу, безпеки пам’яті, швидкості та коректності Rust. InfoWorld пропонує короткий огляд п’яти найпопулярніших вебфреймворків Rust: Actix Web, Rocket, Warp, Axum і Poem.
Усі вони надають загальні елементи для вебсервісів: маршрутизація, обробка запитів, кілька типів відповідей і проміжне програмне забезпечення. Зауважте, що ці фреймворки не забезпечують створення шаблонів, які зазвичай обробляються окремими ящиками.
Actix Web
Actix Web є найпопулярнішим вебфреймворком для Rust. Він задовольняє майже всі основні потреби: він високопродуктивний, підтримує широкий набір функцій сервера та вимагає невеликих урочистостей, щоб зібрати базовий сайт. Усі функції Actix Web доступні у стабільній гілці Rust.
Ось базова програма «hello world» в Actix Web:
Rocket
Велика відмінність Rocket серед вебфреймворків Rust полягає в тому, що він дозволяє отримувати найбільше результатів із найменшою кількістю коду. Написання базової вебпрограми в Rocket займає відносно небагато рядків і мало зусиль. Rocket досягає цього, використовуючи систему типів Rust для опису багатьох дій, щоб їх можна було застосувати та закодувати під час компіляції.
Ось базова програма «hello world» у Rocket:
Warp
Велика відмінність Warp від інших вебфреймворків Rust полягає в тому, як він використовує складові компоненти — «фільтри», кажучи жаргоном Warp, — які можна об’єднати разом для створення сервісів.
Базовий «hello world» у Warp не дуже добре демонструє цю функцію, але варто показати, наскільки стислою може бути структура:
Фільтри реалізують ознаку Filter, кожен фільтр здатний передавати вихідні дані іншому фільтру для зміни поведінки. У цьому прикладі warp::path є файлом, який можна зв’язати з іншими операціями, такими як .map() для застосування функції.
Ще один приклад із документації Warp демонструє систему фільтрів більш детально:
Axum
Фреймворк Axum будується на екосистемі tower crate для будь-яких програм клієнт/сервер, а також tokio для async. Це полегшує використання Axum, якщо ви вже маєте досвід роботи з tower або використовуєте її в союзних проектах.
Ось базова програма Axum «hello world», яку можна знайти в документації Axum. Ви помітите, що він не дуже відрізняється від Actix:
Poem
Більшість мов мають принаймні один повнофункціональний «максималістичний» вебфреймворк (наприклад, Django на Python) і один крихітний, стислий «мінімалістичний» вебфреймворк (наприклад, Bottle, знову на Python). Poem, мінімальний кінець спектру для Rust, пропонує за замовчуванням достатньо функцій, щоб створити базову вебслужбу.
Ось приклад «hello world», що повторює ім'я користувача, включене в URL-адресу:
Який фреймворк Rust найкращий для вас?
Загалом Actix Web працює як гарне, збалансоване рішення, особливо якщо метою є продуктивність. Rocket дозволяє зробити ваш код коротким, але виразним.
Програмісти, які люблять працювати зі складними елементами, захочуть спробувати Warp, оскільки він дозволяє програмно створювати маршрути та робочі процеси з великою виразністю. Axum найбільше сподобається користувачам Rust, які вже знайомі з екосистемою tower, але він достатньо корисний, тому не обмежується цією аудиторією. Poem простий за замовчуванням, і це чудово, якщо все, що вам потрібно, це найпростіша маршрутизація та обробка запитів. Ви також можете встановити додаткові функції, якщо вони вам потрібні.
Читайте також на ProIT: Три причини, чому розробникам варто розглянути Rocky Linux 9.4.
А ще шукайте на нашому сайті лайфхаки, як переконатися, що користувачі періодично оновлюють свої паролі в Linux.
Підписуйтеся на ProIT у Telegram, щоб не пропустити жодної публікації!