Siit saate teada, kuidas luua kohandatud HTTP-veebiserverit, kasutades Rust's Actixi või Rocketi paketti.

HTTP kasutab teabe ja andmete edastamiseks klient-serveri arhitektuuri. Serveripoolsete programmeerimiskeelte, nagu Rust, üks funktsioone on serverite ja kliendirakenduste arendamine HTTP-põhiste teenustega suhtlemiseks.

Rust sobib oma ohutuse, jõudluse ja töökindluse funktsioonide tõttu HTTP-serverite ehitamiseks. Rusti kolmandate osapoolte kastid, nagu Actix ja Rocket, on populaarsed keerukate veebiserverite ehitamiseks, mis saavad hakkama suure liiklusega.

Miks peaksite HTTP veebiserveri arendamiseks kasutama roostet?

Rust on veebiserveri arenduses populaarsust kogunud, kuna mõned keele funktsioonid vastavad täpselt enamiku veebiserverite ehitamiseks.

Rusti kasutamine tagab teie rakenduse tõhusa skaleerimise, muutes keele ideaalseks suure jõudlusega rakenduste loomiseks. Siin on konkreetsed põhjused, miks kaaluda oma veebiserveri ja muude serveripoolsete rakenduste jaoks Rusti kasutamist.

instagram viewer

Rooste kõrge jõudlus

Suur jõudlus on üks põhjusi, miks Rust on suurepärane valik HTTP-veebiserverite ehitamiseks. Rust pakub madalat juurdepääsu süsteemiressurssidele, sealhulgas mälule ja CPU-le, võimaldades teil kirjutada koodi, mis töötab kiiremini vähemate ressurssidega kui teised serveripoolsed keeled.

Lisaks välistab Rusti omandisüsteem kompileerimise ajal prügi kogumise vajaduse, mis on üks põhjusi, miks mõned serveripoolsed keeled on aeglased.

Ohutus ja turvalisus

Rusti mäluhalduse omandisüsteem muudab keele veebiserveri arendamiseks turvaliseks. Te ei koge tühiseid või rippuvaid viiteid, mis võivad põhjustada mälulekkeid ja muid turvaauke.

Rooste omandisüsteem hoiab ära need tavalised vead, et hoida teie server ja rakendused turvalisena. Rust keskendub ka puhvri ületäitumise ja muude mäluga seotud vigade vältimisele.

Samaaegsus

Samaaegsus on võime käivitada programmi mitut ühikut korrast ära ilma väljundit mõjutamata. Samaaegse programmi väljund peaks olema sama, mis asünkroonse programmi väljund.

Samaaegsus võib teie rakenduse jõudlust märkimisväärselt mõjutada, kuna serverid peavad käsitlema mitut päringut korraga. Rooste pakub tuge kooseksisteerimiseks kerge keermestusmudeliga.

Rusti samaaegse programmeerimise eeliseks on see, et omandisüsteem võimaldab teil kirjutada niidikindlat koodi, ilma et oleks vaja lukke ja muid sünkroonimisprimitiive.

Rust Standard Library ja kolmanda osapoole paketid Rusti ökosüsteemis pakkuda kaasaegseid tööriistu tõhusaks veebiserveri arendus.

Cargo, Rusti paketihaldur, lihtsustab sõltuvushaldust ja loob protsesse. Lisaks on Rustil suurepärane IDE tugi selliste tööriistadega nagu Rust Analyzer, mis pakuvad sujuvat koodi lõpetamist, vigade esiletõstmist ja muid funktsioone.

Actixi ja Rocketi raamatukogude ülevaade

Rusti standardraamatukogus on suurem osa veebiserverite ehitamiseks vajalikest utiliitidest. Kolmandate osapoolte raamatukogudele meeldib Rakett ja Actix lihtsustage Rustiga serveripoolsete rakenduste loomist.

Actix ja Rakett on populaarsed Rusti veebiraamistikud, kuid teegid erinevad disaini ja funktsioonide poolest.

Rocket on kõrgetasemeline veebiraamistik, mis seab esikohale tootlikkuse ja kasutusmugavuse. Rocket pakub Rustis veebirakenduste loomiseks palju abstraktsioone ja süntaksisuhkrut. Rocket on populaarne ka oma tugeva tippimise ja intuitiivse API disaini poolest.

Saate lisada Rocketi oma projekti sõltuvusena Cargo.toml fail, et alustada Rustis veebirakenduste loomist:

[sõltuvused]
rakett = "0.4.11"

Teisest küljest on Actix-web madala tasemega raamistik, mis seab esikohale jõudluse ja mastaapsuse. Actix kasutab näitlejapõhist samaaegsusmudelit ja pakub mitteblokeerivat sisendit/väljundit, mis muudab paketi ideaalseks toimivate veebirakenduste loomiseks.

Lisage Actix projektisõltuvusena sõltuvused osa teie Cargo.toml fail:

[sõltuvused]
actix-web = "4.3.1"

Projekti jaoks teegi valimine sõltub teie projekti spetsifikatsioonidest, teegi funktsioonidest ning teie kogemusest Rusti ja HTTP-ga.

Lihtsa veebiserveri ehitamine Rustis

Pärast Rusti projekti loomist ja mis tahes Rocketi või Actixi raamistiku lisamist oma projekti sõltuvustele Cargo.toml faili, olete valmis Rustis veebiserveri ehitamist alustama.

Lihtsa veebiserveri loomine Actixiga

Rustis veebiteenuste loomisel saate päringute jaoks kasutada serialisaatorit.

Serde on populaarne Rusti teek andmete serialiseerimiseks ja deserialiseerimiseks Rusti tüüpide ja andmevormingute (nt JSON, YAML ja TOML) vahel. Serde pakub raamistikku andmete teisendamise määratlemiseks Rusti andmestruktuuride ja vastavate esituste vahel muudes andmevormingutes.

Siin on direktiiv Serde lisamiseks oma projekti jaoks kolmanda osapoole paketina.

[sõltuvused]
serde = { versioon = "1.0.159", funktsioonid = ["tuletama"] }

Kui olete Serde ja Actixi projektisõltuvustena lisanud, saate Rustiga luua lihtsa veebiserveri. Siit saate teada, kuidas saate seadistada lihtsa Tere, Maailm! veebiserver, mis kirjutab Actixiga kliendile stringi:

Esmalt importige saidist vajalikud moodulid ja tüübid actix_web ja serde kastid:

kasutada actix_web::{hanki, veeb, rakendus, HttpResponse, HttpServer, Responder};
kasutada serde::{Serialiseeri, järjesta};

Sa kasutad serde kliendile saadetud sõnumi järjestamiseks struktuuriga. Serde teisendab kliendi jaoks struktuuri JSON-iks. Siin on sõnumi struktuur:

#[tuletada (silumine, serialiseerimine, serialiseerimine)]
struktuurSõnum {
sõnum: String,
}

Nüüd saate lõpp-punkti jaoks määratleda käitleja funktsiooni. Käsitlejafunktsiooni ülaosas saate kohandatud käitumise jaoks lisada dekoraatoreid.

#[get("/")]
asünkrfnTere() -> impl Vastaja {
HttpResponse::Okei().json (Sõnum {
sõnum: "Tere, Maailm!".to_owner(),
})
}

The Tere käitleja funktsioon käsitleb GET-päringuid. Funktsioon tagastab tüübi, mis rakendab Vastaja tunnus alates Actix pakett.

The json meetod HttpResponse:: Ok() tüüp võtab struktuurieksemplari, mis Serde käepidemed kapoti all ja tagastab vastuse kliendile.

Pärast lõpp-punkti määratlemist saate käivitada serveri eksemplari ja ühendada lõpp-punkti marsruudile.

#[actix_web:: main]
asünkrfnpeamine() -> std:: io::Tulemus {
HttpServer:: uus(|| Rakendus:: uus().teenus (tere))
.bind("127.0.0.1:8080")?
.run()
.ootama
}

The HttpServer:: uus funktsioon on uus serveri eksemplar. The peamine funktsioon käivitub ja server ühendab selle Tere käitleja funktsiooni uue rakenduse eksemplariga. The siduda meetod seob serveri määratud URL-iga ja jooksma funktsioon käivitab serveri.

Lihtsa veebiserveri ehitamine raketi abil

Rocket on minimalistlik, nii et saate seadistada lihtsa veebiserveri ilma muude sõltuvusteta kui Rakett kast.

Siit saate teada, kuidas seadistada lihtsat serverit a Tere, Maailm! lõpp-punkt kasutades Rocket:

Esmalt importige oma serveri jaoks vajalikud sõltuvused.

#![funktsioon (proc_macro_hygiene, decl_macro)]

#[makro_kasutus]
välinekast rakett;

// import raketikastist
kasutada rakett:: vastus:: sisu;
kasutada rakett:: riik;

The #![funktsioon (proc_macro_hygiene, decl_macro)] atribuut võimaldab Rusti eksperimentaalseid funktsioone Rocketi raamistiku jaoks. The #[makro_kasutus] atribuut impordib makrosid rakendusest rakett moodul.

Siin on töötleja funktsioon, mis teenindab nõudmisel HTML-i:

#[get("/")]
fnTere, Maailm() -> sisu:: HTML'staatilinestr> {
sisu:: HTML("

Tere, Maailm!

"
)
}

The Tere, Maailm funktsioon tagastab staatilise HTML-stringi koos sisu:: HTML funktsiooni.

Siin on serveri konfiguratsioonistruktuuri deklaratsioon (raketi raamistiku konventsioon):

struktuurKonfig {
port: u16,
}

#[get("/port")]
fnsadamasse(konfiguratsioon: olek) -> String {
formaat!("Server töötab pordis {}", config.port)
}

Kui käivitate serveri, saate teha päringuid /port pordi oleku lõpp-punkt.

Lõpuks loote serverieksemplari süüdata funktsiooni. Lisage konfiguratsioonid, ühendage marsruudid ja käivitage server:

fnpeamine() {
lase config = Config { port: 8000 };

rakett:: süüdata()
.manage (config)
.mount("/", marsruudid![tere_maailm, sadam])
.launch();
}

The konfig muutuja on eksemplar Konfig struktuur. The süüdata funktsioon käivitab serveri eksemplari hallata meetod lisab konfiguratsiooni serverisse ja mount meetod paigaldab käitleja funktsiooni baasmarsruutidele. Lõpuks, käivitada meetod käivitab serveri määratud pordi kuulamiseks.

WASM-i abil saate roostes luua võimsaid veebirakendusi

WebAssembly (WASM) on binaarne käsuvorming, mis on loodud täitmiseks brauserites ja muudes seadmetes. WASM pakub madala taseme baitkoodi vormingut, mida kõrgema taseme programmeerimiskeeled, nagu Rust, saavad kasutada kompileerimise sihtmärgina.

WASM-i abil saate oma Rust-koodi kompileerida binaarvormingusse, mida saavad käivitada enamik populaarseid brausereid. WASM avab võimaluste maailma, et luua Rustis tugevaid veebirakendusi, sealhulgas täispinu veebirakendusi.