Использование Rust в Веб-Разработке

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Всем привет! Наверно многие уже знают про язык программирования Rust. Но если кто не знает, Rust -  мультипарадигмальный компилируемый язык программирования общего назначения. Всем известно что Rust в основном используется для создания CLI приложений и системного программирования, но у него есть другие области. Например - разработка видео-игр, но мы не об этом. Сегодня я бы хотел обсудить веб-программирование на Rust.

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

Actix-Web - производительный фреймворк для создании веб-приложений на Rust. Он очень лёгкий и удобный. Его удобность - быстрота в одном исполняемом файле. Просто запускаешь .exe файл и целое приложение у тебя в одном файле, чем у PHP у которого половину папок и файлов занимает Docker и Composer. Actix-Web основан на другой библиотеке (Actix, да-да, не Web а просто Actix), он работает на асинхронных и акторных функциях.

use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder};

#[get("/")]
async fn hello() -> impl Responder {
    HttpResponse::Ok().body("Hello World!")
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new()
            .service(hello)
    })
    .bind("127.0.0.1:8080")?
    .run()
    .await
}

Как вы видите Actix-Web очень простой, сначала создаём функцию hello() и ставим ей макрос "get", он обозначает запрос (GET/POST), дальше просто мы прописываем в функции HttpResponse который будет отвечать нам "Hello World!". Дальше у нас идёт асинхронная main() функция, дальше ничего особенного, создаём сервер, запускаем и готово! На адресе http://127.0.0.1:8080/ мы видим надпись "Hello, World!". Сайт Actix-Web: https://actix.rs/.

Другой фреймворк, Rocket, довольно интересный. Rocket тоже удобный и быстрый, но его фишка в том что он расширяемый. Его архитектура позволяет писать к нему дополнения или даже просто внести изменения в сам фреймворк (у себя в проекте). В этом Rocket удобен, например, вы можете написать свою базу данных для Rocket, или добавить в Rocket те вещи, которых не хватает в других фреймворках. Ну и тем более само название фреймворка намекает на то что он быстрый (как ракета). Хотя в моём опыте использования Rocket по скорости он уступает Actix-Web.

#![feature(proc_macro_hygiene, decl_macro)]

#[macro_use] extern crate rocket;

#[get("/")]
fn index() -> &'static str {
    "Hello, world!"
}

fn main() {
    rocket::ignite().mount("/", routes![index]).launch();
}

Синтаксис немного отличается от Actix-Web, в частности сервер отличается очень сильно, по умолчанию, порт и адрес сервера localhost:8000, но его можно поменять (логично), Кстати хэндлинг функции "index" на сервер, немного отличается, мы указываем ему роутинг главной страницы и в макросе функции, и в хэндлинге функции. Метод launch() запускает наше веб-приложение. Всё, готово! Сайт Rocket: https://rocket.rs/.

На самом деле есть очень много фреймворков/библиотек для создания веб-приложений на Rust. Но самые популярные и лучшие это Actix-Web и Rocket. Вообщем, веб-программирование на Rust удобно, просто, и производительно. Всем приятной разработки на Rust, с вами был lambda.

Источник: https://habr.com/ru/post/721856/


Интересные статьи

Интересные статьи

Всем привет ещё раз, пришло время продолжить обсуждение применения  Composition root в Unity. В прошлой статье я описал основные положения данной архитектуры, способы проброса зависимостей и орга...
В вопросах именно сетевой безопасности функционально выделяются два компонента:IDS - Intrusion Detection System, система обнаружения вторжений.IPS - Intrusion Prevention ...
Команда Rust рада сообщить о выпуске новой версии — 1.53.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение. Если вы устано...
R, как и большинство подобных ему высокоуровневых скриптовых языков, часто полагается на код, написанный на более низкоуровневом языке. Библиотеки R - пакеты (packages) -...
В 2019 году люди знакомятся с брендом, выбирают и, что самое главное, ПОКУПАЮТ через интернет. Сегодня практически у любого бизнеса есть свой сайт — от личных блогов, зарабатывающих на рекламе, до инт...