Zistite, ako vytvoriť vlastný webový server HTTP pomocou balíka Rust's Actix alebo Rocket.

HTTP využíva na prenos informácií a dát architektúru klient-server. Jednou z funkcií programovacích jazykov na strane servera, ako je Rust, je vývoj serverov a klientskych aplikácií na interakciu so službami založenými na HTTP.

Rust je vhodný na budovanie HTTP serverov vďaka svojim funkciám bezpečnosti, výkonu a spoľahlivosti. Prepravky tretích strán od spoločnosti Rust, ako sú Actix a Rocket, sú obľúbené na vytváranie sofistikovaných webových serverov, ktoré dokážu zvládnuť vysokú návštevnosť.

Prečo by ste mali používať Rust na vývoj webového servera HTTP?

Rust si získal popularitu pri vývoji webových serverov, pretože niektoré funkcie jazyka sú presne tie požiadavky na budovanie väčšiny webových serverov.

Používanie Rustu zaisťuje efektívne škálovanie vašej aplikácie, vďaka čomu je jazyk ideálny na vytváranie vysokovýkonných aplikácií. Tu sú konkrétne dôvody, prečo zvážiť použitie Rustu pre váš webový server a ďalšie aplikácie na strane servera.

instagram viewer

Vysoký výkon Rustu

Vysoký výkon je jedným z dôvodov, prečo je Rust vynikajúcou voľbou pre budovanie webových serverov HTTP. Rust poskytuje nízkoúrovňový prístup k systémovým prostriedkom, vrátane pamäte a CPU, čo vám umožňuje písať kód, ktorý beží rýchlejšie s menším množstvom zdrojov ako iné jazyky na strane servera.

Okrem toho vlastnícky systém Rustu eliminuje potrebu zhromažďovania odpadu v čase kompilácie, čo je jeden z dôvodov, prečo sú niektoré jazyky na strane servera pomalé.

Bezpečnosť a ochrana

Vlastnícky systém správy pamäte spoločnosti Rust robí jazyk bezpečným pre vývoj webového servera. Nezaznamenáte nulové alebo visiace odkazy na ukazovatele, ktoré môžu viesť k úniku pamäte a iným bezpečnostným chybám.

Rustov systém vlastníctva zabraňuje týmto bežným chybám, aby bol váš server a aplikácie v bezpečí. Rust sa zameriava aj na prevenciu pretečenia vyrovnávacej pamäte a iných chýb súvisiacich s pamäťou.

Súbeh

Súbežnosť je schopnosť spúšťať viacero jednotiek programu mimo poradia bez ovplyvnenia výstupu. Výstup súbežného programu by mal byť rovnaký ako výstup asynchrónneho programu.

Súbežnosť môže výrazne ovplyvniť výkon vašej aplikácie, pretože servery musia spracovať viacero požiadaviek súčasne. Rust poskytuje podporu pre koexistenciu s ľahkým modelom závitov.

Omáčka súbežného programovania v Ruste spočíva v tom, že systém vlastníctva vám umožňuje písať kód bezpečný pre vlákna bez potreby zámkov a iných synchronizačných primitív.

Štandardná knižnica Rust a balíky tretích strán v ekosystéme Rust poskytnúť moderné nástroje pre efektívne vývoj webových serverov.

Cargo, správca balíkov spoločnosti Rust, zjednodušuje správu závislostí a vytvára procesy. Okrem toho má Rust vynikajúcu podporu IDE s nástrojmi ako Rust Analyzer, ktoré poskytujú bezproblémové dokončenie kódu, zvýrazňovanie chýb a ďalšie funkcie.

Prehľad knižníc Actix a Rocket

Rust's Standard Library má väčšinu nástrojov, ktoré budete potrebovať na vytváranie webových serverov. Knižnice tretích strán ako Raketa a Actix zjednodušiť vytváranie aplikácií na strane servera pomocou Rust.

Actix a Raketa sú populárne webové rámce Rust, ale knižnice sa líšia dizajnom a funkciami.

Rocket je webový rámec na vysokej úrovni, ktorý uprednostňuje produktivitu a jednoduchosť použitia. Rocket poskytuje veľa abstrakcií a syntax cukru na vytváranie webových aplikácií v Ruste. Rocket je obľúbený aj pre svoje silné písanie a intuitívny dizajn API.

Môžete pridať Rocket ako závislosť projektu vo svojom Cargo.toml súbor, aby ste mohli začať vytvárať webové aplikácie v Ruste:

[závislosti]
raketa = "0.4.11"

Na druhej strane je Actix-web nízkoúrovňový rámec, ktorý uprednostňuje výkon a škálovateľnosť. Actix využíva model súbežnosti založený na aktéroch a poskytuje neblokujúce I/O, vďaka čomu je balík ideálny na vytváranie výkonných webových aplikácií.

Pridajte Actix ako závislosť projektu v závislosti časť vášho Cargo.toml súbor:

[závislosti]
actix-web = "4.3.1"

Výber knižnice pre váš projekt bude závisieť od špecifikácií vášho projektu, funkcií knižnice a vašich skúseností s Rust a HTTP.

Vytvorenie jednoduchého webového servera v Ruste

Po vytvorení projektu Rust a pridaní ktoréhokoľvek z rámcov Rocket alebo Actix do závislostí vášho projektu v Cargo.toml súbor, ste pripravení začať budovať webový server v Rust.

Vytvorenie jednoduchého webového servera s Actixom

Pri vytváraní webových služieb v Ruste môžete použiť serializátor pre požiadavky.

Serde je populárna knižnica Rust na serializáciu a deserializáciu údajov medzi typmi Rust a dátovými formátmi ako JSON, YAML a TOML. Serde poskytuje rámec na definovanie konverzie dát medzi dátovými štruktúrami Rust a zodpovedajúcimi reprezentáciami v iných dátových formátoch.

Tu je smernica na pridanie Serde ako balíka tretej strany pre váš projekt.

[závislosti]
Serde = { verzia = "1.0.159", funkcie = ["odvodiť"] }

Po pridaní Serde a Actix ako projektových závislostí môžete vytvoriť základný webový server s Rustom. Tu je návod, ako môžete nastaviť jednoduchý Ahoj svet! webový server, ktorý zapíše reťazec klientovi pomocou Actix:

Najprv importujte potrebné moduly a typy z actix_web a Serde prepravky:

použitie actix_web::{get, web, aplikácia, HttpResponse, HttpServer, Responder};
použitie serde::{deserializovať, serializovať};

budete používať Serde na serializáciu správy klientovi so štruktúrou. Serde pre klienta skonvertuje štruktúru na JSON. Tu je štruktúra správy:

#[derive (Debug, Serialize, Deserialize)]
štrukturovaťSpráva {
správa: Reťazec,
}

Teraz môžete definovať funkciu obsluhy pre koncový bod. V hornej časti vašej funkcie manipulátora môžete pridať dekoratérov pre vlastné správanie:

#[získať("/")]
asyncfnAhoj() -> impl Odpovedač {
HttpResponse::Dobre().json (Správa {
správa: "Ahoj Svet!".to_owned(),
})
}

The Ahoj funkcia handler spracováva požiadavky GET. Funkcia vráti typ, ktorý implementuje Odpovedač vlastnosť z Actix balík.

The json metóda HttpResponse:: Ok() typ berie inštanciu štruktúry, ktorá Serde spracováva pod kapotou a vracia odpoveď klientovi.

Po definovaní koncového bodu môžete spustiť inštanciu servera a pripojiť koncový bod na trasu.

#[actix_web:: main]
asyncfnHlavná() -> std:: io::Výsledok {
HttpServer:: new(|| App:: new().service (ahoj))
.bind("127.0.0.1:8080")?
.run()
.čakať
}

The HttpServer:: nový je nová inštancia servera. The Hlavná spustí sa funkcia a server pripojí Ahoj s novou inštanciou aplikácie. The viazať metóda viaže server na zadanú adresu URL a behať funkcia spúšťa server.

Vytvorenie jednoduchého webového servera s raketou

Rocket je minimalistický, takže si môžete nastaviť jednoduchý webový server bez akýchkoľvek iných závislostí Raketa prepravka.

Tu je návod, ako nastaviť jednoduchý server s a Ahoj svet! koncový bod pomocou Rocket:

Najprv importujte potrebné závislosti pre váš server.

#![feature (proc_macro_hygiene, decl_macro)]

#[macro_use]
externéprepravka raketa;

// dovoz z prepravky Rocket
použitie raketa:: odozva:: obsah;
použitie raketa:: Štát;

The #![feature (proc_macro_hygiene, decl_macro)] atribút povoľuje experimentálne funkcie Rust pre rámec Rocket. The #[macro_use] atribút importuje makrá z raketa modul.

Tu je funkcia obsluhy, ktorá poskytuje HTML na požiadanie:

#[získať("/")]
fnahoj_svet() -> content:: Html'statickýstr> {
obsah:: Html("

Ahoj svet!

"
)
}

The ahoj_svet funkcia vráti statický reťazec HTML s príponou obsah:: Html funkciu.

Tu je deklarácia konfiguračnej štruktúry pre server (konvencia rámca Rocket):

štrukturovaťKonfig {
port: u16,
}

#[získať("/port")]
fnprístav(config: State) -> Reťazec {
formát!("Server beží na porte {}", config.port)
}

Keď spustíte server, môžete zadávať požiadavky na /port koncový bod pre stav portu.

Nakoniec vytvoríte inštanciu servera s zapáliť funkciu. Pridajte konfigurácie, pripojte trasy a spustite server:

fnHlavná() {
nech config = Konfigurácia { port: 8000 };

raketa:: zapáliť()
.manage (config)
.mount("/", trasy![hello_world, prístav])
.spustiť();
}

The config premenná je inštanciou premennej Konfig štrukturovať. The zapáliť funkcia spúšťa inštanciu servera, spravovať metóda pridá konfiguráciu na server a namontovať metóda pripojí funkciu handlera na základné trasy. Nakoniec, spustiť metóda spustí server, aby načúval na zadanom porte.

Pomocou WASM môžete vytvárať výkonné webové aplikácie v hrdze

WebAssembly (WASM) je binárny formát inštrukcií navrhnutý na vykonávanie v prehliadačoch a iných zariadeniach. WASM poskytuje nízkoúrovňový formát bajtového kódu, ktorý môžu programovacie jazyky vyššej úrovne ako Rust použiť ako cieľ kompilácie.

Pomocou WASM môžete skompilovať svoj kód Rust do binárneho formátu, ktorý dokáže spustiť väčšina populárnych prehliadačov. WASM otvára svet možností pre vytváranie robustných webových aplikácií v Ruste, vrátane full-stack webových aplikácií.