Uzziniet, kā izveidot pielāgotu HTTP tīmekļa serveri, izmantojot Rust's Actix vai Rocket pakotni.

HTTP informācijas un datu pārsūtīšanai izmanto klienta-servera arhitektūru. Viena no servera puses programmēšanas valodu, piemēram, Rust, funkcijām ir serveru un klientu lietotņu izstrāde mijiedarbībai ar HTTP pakalpojumiem.

Rust ir piemērots HTTP serveru veidošanai, pateicoties tā drošības, veiktspējas un uzticamības funkcijām. Rust trešo pušu kastes, piemēram, Actix un Rocket, ir populāras, lai izveidotu sarežģītus tīmekļa serverus, kas spēj apstrādāt lielu trafiku.

Kāpēc HTTP tīmekļa servera izstrādei vajadzētu izmantot Rust?

Rust ir ieguvis popularitāti tīmekļa serveru izstrādē, jo dažas valodas funkcijas ir tieši prasības, lai izveidotu lielāko daļu tīmekļa serveru.

Rust izmantošana nodrošina efektīvu lietojumprogrammu mērogošanu, padarot valodu ideāli piemērotu augstas veiktspējas lietotņu izveidei. Tālāk ir norādīti konkrēti iemesli, kādēļ apsvērt iespēju izmantot Rust savam tīmekļa serverim un citām servera puses lietojumprogrammām.

instagram viewer

Rust's High Performance

Augsta veiktspēja ir viens no iemesliem, kāpēc Rust ir lieliska izvēle HTTP tīmekļa serveru veidošanai. Rust nodrošina zema līmeņa piekļuvi sistēmas resursiem, tostarp atmiņai un centrālajam procesoram, ļaujot rakstīt kodu, kas darbojas ātrāk ar mazākiem resursiem nekā citas servera puses valodas.

Turklāt Rust īpašumtiesību sistēma novērš nepieciešamību pēc atkritumu savākšanas kompilēšanas laikā, kas ir viens no iemesliem, kāpēc dažas servera puses valodas darbojas lēni.

Drošība un drošība

Rust atmiņas pārvaldības īpašumtiesību sistēma padara valodu drošu tīmekļa servera izstrādei. Jums nav redzamas nulles vai karājošas rādītāju atsauces, kas var izraisīt atmiņas noplūdes un citas drošības ievainojamības.

Rust īpašumtiesību sistēma novērš šīs izplatītās kļūdas, lai nodrošinātu jūsu servera un lietotņu drošību. Rust koncentrējas arī uz bufera pārpildes un citu ar atmiņu saistītu kļūdu novēršanu.

Vienlaicīgums

Vienlaicīgums ir iespēja palaist vairākas programmas vienības ārpus kārtības, neietekmējot izvadi. Vienlaicīgas programmas izvadei jābūt tādai pašai kā asinhronas programmas izvadei.

Vienlaicīgums var būtiski ietekmēt jūsu lietojumprogrammas veiktspēju, jo serveriem vienlaikus ir jāapstrādā vairāki pieprasījumi. Rūsa nodrošina atbalstu līdzāspastāvēšanai ar vieglu vītņu modeli.

Vienlaicīgas programmēšanas Rust mērcē ir tas, ka īpašumtiesību sistēma ļauj rakstīt pavedienu drošu kodu, neizmantojot slēdzenes un citus sinhronizācijas primitīvus.

Rustas standarta bibliotēka un trešo pušu pakotnes Rust ekosistēmā nodrošināt mūsdienīgus instrumentus efektīvai tīmekļa servera izstrāde.

Cargo, Rust pakotņu pārvaldnieks, vienkāršo atkarības pārvaldību un veido procesus. Turklāt Rust ir lielisks IDE atbalsts ar tādiem rīkiem kā Rust Analyzer, kas nodrošina netraucētu koda pabeigšanu, kļūdu izcelšanu un citas funkcijas.

Pārskats par Actix un Rocket bibliotēkām

Rust's Standard Library ir lielākā daļa utilītu, kas jums būs nepieciešams, lai izveidotu tīmekļa serverus. Trešo pušu bibliotēkām patīk Raķete un Actix vienkāršojiet servera puses lietojumprogrammu izveidi, izmantojot Rust.

Actix un Raķete ir populāri Rust tīmekļa ietvari, taču bibliotēkas atšķiras pēc dizaina un funkcijām.

Rocket ir augsta līmeņa tīmekļa ietvars, kura prioritāte ir produktivitāte un lietošanas vienkāršība. Rocket nodrošina daudz abstrakciju un sintakses cukura, lai izveidotu tīmekļa lietotnes Rust. Rocket ir populāra arī tās spēcīgas rakstīšanas un intuitīvā API dizaina dēļ.

Varat pievienot Rocket kā projekta atkarību savā Krava.toml failu, lai sāktu veidot tīmekļa lietotnes Rust:

[atkarības]
raķete = "0.4.11"

No otras puses, Actix-web ir zema līmeņa sistēma, kuras prioritāte ir veiktspēja un mērogojamība. Actix izmanto uz aktieriem balstītu vienlaicības modeli un nodrošina nebloķējošu I/O, kas padara pakotni ideāli piemērotu veiktspējīgu tīmekļa lietojumprogrammu izveidei.

Pievienojiet Actix kā projekta atkarību programmā atkarības jūsu sadaļa Krava.toml fails:

[atkarības]
actix-web = "4.3.1"

Bibliotēkas izvēle savam projektam būs atkarīga no jūsu projekta specifikācijām, bibliotēkas funkcijām un jūsu pieredzes ar Rust un HTTP.

Vienkārša tīmekļa servera izveide Rustā

Pēc Rust projekta izveides un jebkura no Rocket vai Actix ietvariem pievienošanas sava projekta atkarībām Krava.toml failu, jūs esat gatavs sākt veidot tīmekļa serveri Rust.

Vienkārša tīmekļa servera izveide, izmantojot Actix

Veidojot tīmekļa pakalpojumus Rustā, pieprasījumiem varat izmantot serializētāju.

Serde ir populāra Rust bibliotēka datu serializēšanai un deserializēšanai starp Rust veidiem un datu formātiem, piemēram, JSON, YAML un TOML. Serde nodrošina ietvaru datu konvertēšanas noteikšanai starp Rust datu struktūrām un atbilstošajiem attēlojumiem citos datu formātos.

Šeit ir norādījumi par Serde kā trešās puses pakotnes pievienošanu savam projektam.

[atkarības]
serde = { versija = "1.0.159", funkcijas = ["atvasināt"] }

Kad esat pievienojis Serde un Actix kā projekta atkarības, ar Rust varat izveidot pamata tīmekļa serveri. Lūk, kā varat iestatīt vienkāršu Sveika pasaule! tīmekļa serveris, kas klientam ieraksta virkni, izmantojot Actix:

Vispirms importējiet nepieciešamos moduļus un veidus no actix_web un serde kastes:

izmantot actix_web::{get, web, App, HttpResponse, HttpServer, Responder};
izmantot serde::{Deserialize, Serialize};

Jūs izmantosit serde lai serializētu ziņojumu klientam ar struktūru. Serde klientam konvertēs struktūru uz JSON. Lūk, ziņojuma struktūra:

#[atvasināt (atkļūdot, serializēt, deserializēt)]
struktūraZiņojums {
ziņa: Stīga,
}

Tagad varat definēt galapunkta apstrādātāja funkciju. Apdarinātāja funkcijas augšdaļā varat pievienot dekoratorus pielāgotām darbībām.

#[gūt("/")]
asinhronsfnSveiki() -> impl Atbildētājs {
HttpResponse::Labi().json (Ziņojums {
ziņa: "Sveika pasaule!".to_owner(),
})
}

The Sveiki apdarinātāja funkcija apstrādā GET pieprasījumus. Funkcija atgriež tipu, kas ievieš Atbildētājs iezīme no Actix iepakojums.

The json metode HttpResponse:: Labi() tips ņem struktūras gadījumu, kas Serde rokturi zem pārsega un atdod klientam atbildi.

Pēc galapunkta definēšanas varat palaist servera gadījumu un pievienot galapunktu maršrutā.

#[actix_web:: galvenais]
asinhronsfngalvenais() -> std:: io::Rezultāts {
HttpServer:: jauns(|| App:: new().service (sveiki))
.saistīt("127.0.0.1:8080")?
.run()
.gaidīt
}

The HttpServer:: jauns funkcija ir jauns servera gadījums. The galvenais tiek startēta funkcija, un serveris pievieno Sveiki apdarinātāja funkcija ar jauno lietotnes gadījumu. The saistīt metode saista serveri ar norādīto URL, un palaist funkcija palaiž serveri.

Vienkārša tīmekļa servera izveide ar raķeti

Rocket ir minimālistisks, tāpēc varat iestatīt vienkāršu tīmekļa serveri bez jebkādām atkarībām, izņemot Raķete kaste.

Lūk, kā iestatīt vienkāršu serveri ar a Sveika pasaule! beigu punkts, izmantojot Rocket:

Vispirms importējiet serverī nepieciešamās atkarības.

#![funkcija (proc_macro_hygiene, decl_macro)]

#[macro_use]
ārējaiskaste raķete;

// imports no raķešu kastes
izmantot raķete:: atbilde:: saturs;
izmantot raķete:: Valsts;

The #![funkcija (proc_macro_hygiene, decl_macro)] atribūts iespējo Rust eksperimentālās funkcijas raķešu sistēmai. The #[macro_use] atribūts importē makro no raķete modulis.

Šeit ir apdarinātāja funkcija, kas pēc pieprasījuma apkalpo HTML:

#[gūt("/")]
fnSveika pasaule() -> saturs:: Html'statisksstr> {
saturs:: Html("

Sveika pasaule!

"
)
}

The Sveika pasaule funkcija atgriež HTML statisku virkni ar saturs:: Html funkciju.

Šeit ir servera konfigurācijas struktūras deklarācija (raķešu ietvara konvencija):

struktūraKonfig {
osta: u16,
}

#[gūt("/ports")]
fnosta(konfigurācija: stāvoklis) -> Stīga {
formātā!("Serveris darbojas portā {}", config.port)
}

Kad palaižat serveri, varat veikt pieprasījumus /port galapunkts ostas statusam.

Visbeidzot, jūs izveidosit servera gadījumu ar aizdegties funkciju. Pievienojiet konfigurācijas, pievienojiet maršrutus un palaidiet serveri:

fngalvenais() {
ļaut config = Config { ports: 8000 };

raķete:: aizdegas()
.manage (config)
.mount("/", maršruti![hello_world, osta])
.launch();
}

The konfigurācija mainīgais ir gadījums Konfig struktūra. The aizdegties funkcija startē servera gadījumu pārvaldīt metode pievieno serverim konfigurāciju un mount metode pievieno hendlera funkciju bāzes maršrutos. Visbeidzot, palaist metode palaiž serveri, lai klausītos norādītajā portā.

Izmantojot WASM, Rust var izveidot jaudīgas tīmekļa lietojumprogrammas

WebAssembly (WASM) ir binārs instrukciju formāts, kas paredzēts izpildei pārlūkprogrammās un citās ierīcēs. WASM nodrošina zema līmeņa baitkoda formātu, ko augstāka līmeņa programmēšanas valodas, piemēram, Rust, var izmantot kā kompilācijas mērķi.

Izmantojot WASM, varat apkopot savu Rust kodu binārā formātā, ko var izpildīt lielākā daļa populārāko pārlūkprogrammu. WASM paver iespēju pasauli izturīgu tīmekļa lietojumprogrammu izveidei Rust, tostarp pilnas kaudzes tīmekļa lietotnēm.