రస్ట్‌లో ప్రాథమిక HTTP వెబ్ సర్వర్‌ను ఎలా నిర్మించాలి

రస్ట్‌లో ప్రాథమిక HTTP వెబ్ సర్వర్‌ను ఎలా నిర్మించాలి
మీలాంటి పాఠకులు MUOకి మద్దతు ఇవ్వడానికి సహాయం చేస్తారు. మీరు మా సైట్‌లోని లింక్‌లను ఉపయోగించి కొనుగోలు చేసినప్పుడు, మేము అనుబంధ కమీషన్‌ను సంపాదించవచ్చు. ఇంకా చదవండి.

HTTP సమాచారం మరియు డేటా బదిలీ కోసం క్లయింట్-సర్వర్ నిర్మాణాన్ని ఉపయోగిస్తుంది. రస్ట్ వంటి సర్వర్-సైడ్ ప్రోగ్రామింగ్ భాషల ఫీచర్లలో ఒకటి HTTP-ఆధారిత సేవలతో పరస్పర చర్య చేయడానికి సర్వర్‌లు మరియు క్లయింట్ యాప్‌లను అభివృద్ధి చేయడం.





రస్ట్ దాని భద్రత, పనితీరు మరియు విశ్వసనీయత లక్షణాల కారణంగా HTTP సర్వర్‌లను నిర్మించడానికి అనుకూలంగా ఉంటుంది. యాక్టిక్స్ మరియు రాకెట్ వంటి రస్ట్ యొక్క మూడవ పక్ష డబ్బాలు అధిక ట్రాఫిక్‌ను నిర్వహించగల అధునాతన వెబ్ సర్వర్‌లను రూపొందించడంలో ప్రసిద్ధి చెందాయి.





రోజు యొక్క వీడియోను తయారు చేయండి కంటెంట్‌తో కొనసాగడానికి స్క్రోల్ చేయండి

మీరు HTTP వెబ్ సర్వర్ డెవలప్‌మెంట్ కోసం రస్ట్‌ని ఎందుకు ఉపయోగించాలి?

చాలా వెబ్ సర్వర్‌లను రూపొందించడానికి భాష యొక్క కొన్ని లక్షణాలు ఖచ్చితంగా అవసరాలు కాబట్టి రస్ట్ వెబ్ సర్వర్ అభివృద్ధికి ప్రజాదరణ పొందింది.





రస్ట్‌ని ఉపయోగించడం వల్ల మీ అప్లికేషన్ స్కేల్‌లు సమర్ధవంతంగా ఉండేలా చూస్తుంది, అధిక-పనితీరు గల యాప్‌లను రూపొందించడానికి భాషను అనువైనదిగా చేస్తుంది. మీ వెబ్ సర్వర్ మరియు ఇతర సర్వర్ సైడ్ అప్లికేషన్‌ల కోసం రస్ట్‌ని ఉపయోగించడాన్ని పరిగణించడానికి ఇక్కడ నిర్దిష్ట కారణాలు ఉన్నాయి.

రస్ట్ యొక్క అధిక పనితీరు

HTTP వెబ్ సర్వర్‌లను రూపొందించడానికి రస్ట్ అద్భుతమైన ఎంపిక చేయడానికి గల కారణాలలో అధిక పనితీరు ఒకటి. రస్ట్ మెమరీ మరియు CPUతో సహా సిస్టమ్ వనరులకు తక్కువ-స్థాయి యాక్సెస్‌ను అందిస్తుంది, ఇతర సర్వర్-సైడ్ భాషల కంటే తక్కువ వనరులతో వేగంగా రన్ అయ్యే కోడ్‌ను వ్రాయడానికి మిమ్మల్ని అనుమతిస్తుంది.



అదనంగా, రస్ట్ యొక్క యాజమాన్య వ్యవస్థ కంపైల్ సమయంలో చెత్త సేకరణ అవసరాన్ని తొలగిస్తుంది, ఇది కొన్ని సర్వర్-సైడ్ భాషలు నెమ్మదిగా ఉండటానికి ఒక కారణం.

xbox వన్ వైఫైకి కనెక్ట్ చేయబడదు

జాగ్రత్త మరియు రక్షణ

రస్ట్ యొక్క మెమరీ నిర్వహణ యొక్క యాజమాన్య వ్యవస్థ వెబ్ సర్వర్ అభివృద్ధి కోసం భాషను సురక్షితంగా చేస్తుంది. మెమరీ లీక్‌లు మరియు ఇతర భద్రతా దుర్బలత్వాలకు దారితీసే శూన్యమైన లేదా డాంగ్లింగ్ పాయింటర్ సూచనలను మీరు అనుభవించలేరు.





రస్ట్ యొక్క యాజమాన్య వ్యవస్థ మీ సర్వర్ మరియు యాప్‌లను సురక్షితంగా ఉంచడానికి ఈ సాధారణ లోపాలను నివారిస్తుంది. రస్ట్ బఫర్ ఓవర్‌ఫ్లోలు మరియు ఇతర మెమరీ సంబంధిత ఎర్రర్‌లను నిరోధించడంపై కూడా దృష్టి పెడుతుంది.

కరెన్సీ

కాన్‌కరెన్సీ అనేది అవుట్‌పుట్‌పై ప్రభావం చూపకుండా ప్రోగ్రామ్ యొక్క బహుళ యూనిట్లను అవుట్-ఆఫ్-ఆర్డర్ పద్ధతిలో అమలు చేయగల సామర్థ్యం. ఏకకాల ప్రోగ్రామ్ యొక్క అవుట్‌పుట్ అసమకాలిక ప్రోగ్రామ్ యొక్క అవుట్‌పుట్ వలె ఉండాలి.





సర్వర్‌లు ఏకకాలంలో బహుళ అభ్యర్థనలను నిర్వహించాల్సిన అవసరం ఉన్నందున కాన్‌కరెన్సీ మీ అప్లికేషన్ పనితీరును గణనీయంగా ప్రభావితం చేస్తుంది. రస్ట్ తేలికపాటి థ్రెడింగ్ మోడల్‌తో సహజీవనం కోసం మద్దతును అందిస్తుంది.

రస్ట్‌లో ఏకకాలిక ప్రోగ్రామింగ్ యొక్క సాస్ ఏమిటంటే, యాజమాన్య వ్యవస్థ లాక్‌లు మరియు ఇతర సమకాలీకరణ ఆదిమాంశాల అవసరం లేకుండా థ్రెడ్-సేఫ్ కోడ్‌ను వ్రాయడానికి మిమ్మల్ని అనుమతిస్తుంది.

రస్ట్ ఆధునిక సాధనాలను అందిస్తుంది

రస్ట్ స్టాండర్డ్ లైబ్రరీ మరియు రస్ట్ పర్యావరణ వ్యవస్థలో మూడవ పక్ష ప్యాకేజీలు సమర్థవంతమైన కోసం ఆధునిక సాధనాలను అందిస్తాయి వెబ్ సర్వర్ అభివృద్ధి .

కార్గో, రస్ట్ యొక్క ప్యాకేజీ మేనేజర్, డిపెండెన్సీ నిర్వహణను సులభతరం చేస్తుంది మరియు ప్రక్రియలను నిర్మిస్తుంది. అదనంగా, రస్ట్ అతుకులు లేని కోడ్ పూర్తి చేయడం, ఎర్రర్ హైలైట్ చేయడం మరియు ఇతర లక్షణాలను అందించే రస్ట్ ఎనలైజర్ వంటి సాధనాలతో అద్భుతమైన IDE మద్దతును కలిగి ఉంది.

యాక్టిక్స్ మరియు రాకెట్ లైబ్రరీల అవలోకనం

రస్ట్ యొక్క స్టాండర్డ్ లైబ్రరీలో మీరు వెబ్ సర్వర్‌లను రూపొందించడానికి అవసరమైన చాలా యుటిలిటీ ఉంది. థర్డ్-పార్టీ లైబ్రరీలు వంటివి రాకెట్ మరియు యాక్టిక్స్ రస్ట్‌తో సర్వర్-సైడ్ అప్లికేషన్‌లను నిర్మించడాన్ని సులభతరం చేయండి.

యాక్టిక్స్ మరియు రాకెట్ జనాదరణ పొందిన రస్ట్ వెబ్ ఫ్రేమ్‌వర్క్‌లు, కానీ లైబ్రరీలు డిజైన్ మరియు ఫీచర్లలో విభిన్నంగా ఉంటాయి.

రాకెట్ అనేది ఉత్పాదకత మరియు వాడుకలో సౌలభ్యానికి ప్రాధాన్యతనిచ్చే ఉన్నత-స్థాయి వెబ్ ఫ్రేమ్‌వర్క్. రస్ట్‌లో వెబ్ యాప్‌లను రూపొందించడానికి రాకెట్ చాలా సంగ్రహణలు మరియు సింటాక్స్ చక్కెరను అందిస్తుంది. రాకెట్ దాని బలమైన టైపింగ్ మరియు సహజమైన API రూపకల్పనకు కూడా ప్రసిద్ధి చెందింది.

మీరు మీలో ప్రాజెక్ట్ డిపెండెన్సీగా రాకెట్‌ని జోడించవచ్చు charge.toml రస్ట్‌లో వెబ్ యాప్‌లను రూపొందించడం ప్రారంభించడానికి ఫైల్:

 [dependencies] 
rocket = "0.4.11"

మరోవైపు, Actix-web అనేది పనితీరు మరియు స్కేలబిలిటీకి ప్రాధాన్యతనిచ్చే తక్కువ-స్థాయి ఫ్రేమ్‌వర్క్. యాక్టిక్స్ ఒక యాక్టర్-ఆధారిత కాన్‌కరెన్సీ మోడల్‌ను ప్రభావితం చేస్తుంది మరియు పనితీరు వెబ్ అప్లికేషన్‌లను రూపొందించడానికి ప్యాకేజీని ఆదర్శంగా మార్చే నాన్-బ్లాకింగ్ I/Oని అందిస్తుంది.

లో ప్రాజెక్ట్ డిపెండెన్సీగా Actixని జోడించండి ఆధారపడటం మీ విభాగం charge.toml ఫైల్:

నా గ్రాఫిక్స్ కార్డ్ విండోస్ 10 ని ఎలా చెక్ చేయాలి
 [dependencies] 
actix-web = "4.3.1"

మీ ప్రాజెక్ట్ కోసం లైబ్రరీని ఎంచుకోవడం అనేది మీ ప్రాజెక్ట్ స్పెసిఫికేషన్‌లు, లైబ్రరీ ఫీచర్‌లు మరియు రస్ట్ మరియు HTTPతో మీ అనుభవంపై ఆధారపడి ఉంటుంది.

రస్ట్‌లో సాధారణ వెబ్ సర్వర్‌ను రూపొందించడం

రస్ట్ ప్రాజెక్ట్‌ను సృష్టించి, మీ ప్రాజెక్ట్ యొక్క డిపెండెన్సీలకు రాకెట్ లేదా యాక్టిక్స్ ఫ్రేమ్‌వర్క్‌లలో దేనినైనా జోడించిన తర్వాత charge.toml ఫైల్, మీరు రస్ట్‌లో వెబ్ సర్వర్‌ను రూపొందించడానికి సిద్ధంగా ఉన్నారు.

Actixతో ఒక సాధారణ వెబ్ సర్వర్‌ను రూపొందించడం

  Actix GitHub URL ప్రివ్యూ

రస్ట్‌లో వెబ్ సేవలను నిర్మించేటప్పుడు మీరు అభ్యర్థనల కోసం సీరియలైజర్‌ని ఉపయోగించవచ్చు.

సెర్డే అనేది రస్ట్ రకాలు మరియు JSON, YAML మరియు TOML వంటి డేటా ఫార్మాట్‌ల మధ్య డేటాను సీరియలైజ్ చేయడానికి మరియు డీరియలైజ్ చేయడానికి ప్రముఖ రస్ట్ లైబ్రరీ. రస్ట్ డేటా స్ట్రక్చర్‌లు మరియు ఇతర డేటా ఫార్మాట్‌లలో సంబంధిత ప్రాతినిధ్యాల మధ్య డేటా మార్పిడిని నిర్వచించడానికి సెర్డే ఒక ఫ్రేమ్‌వర్క్‌ను అందిస్తుంది.

మీ ప్రాజెక్ట్ కోసం థర్డ్-పార్టీ ప్యాకేజీగా సెర్డేని జోడించడానికి ఇక్కడ ఆదేశం ఉంది.

 [dependencies] 
serde = { version = "1.0.159" , features = ["derive"] }

మీరు సెర్డే మరియు యాక్టిక్స్‌లను ప్రాజెక్ట్ డిపెండెన్సీలుగా జోడించిన తర్వాత, మీరు రస్ట్‌తో ప్రాథమిక వెబ్ సర్వర్‌ను సృష్టించవచ్చు. మీరు సరళమైనదాన్ని ఎలా సెటప్ చేయవచ్చో ఇక్కడ ఉంది హలో వరల్డ్! Actixతో క్లయింట్‌కు స్ట్రింగ్‌ను వ్రాసే వెబ్ సర్వర్:

ముందుగా, నుండి అవసరమైన మాడ్యూల్స్ మరియు రకాలను దిగుమతి చేయండి యాక్టిక్స్_వెబ్ మరియు కోర్ డబ్బాలు:

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

మీరు ఉపయోగిస్తారు కోర్ క్లయింట్‌కు స్ట్రక్ట్‌తో సందేశాన్ని సీరియలైజ్ చేయడానికి. సెర్డే క్లయింట్ కోసం స్ట్రక్ట్‌ను JSONకి మారుస్తుంది. సందేశం కోసం నిర్మాణం ఇక్కడ ఉంది:

 #[derive(Debug, Serialize, Deserialize)] 
struct Message {
    message: String,
}

మీరు ఇప్పుడు ఎండ్ పాయింట్ కోసం హ్యాండ్లర్ ఫంక్షన్‌ని నిర్వచించవచ్చు. మీ హ్యాండ్లర్ ఫంక్షన్ ఎగువన, మీరు అనుకూల ప్రవర్తనల కోసం డెకరేటర్‌లను జోడించవచ్చు:

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

ది హలో హ్యాండ్లర్ ఫంక్షన్ GET అభ్యర్థనలను నిర్వహిస్తుంది. ఫంక్షన్ అమలు చేసే రకాన్ని అందిస్తుంది ప్రత్యుత్తరం ఇవ్వండి నుండి లక్షణం యాక్టిక్స్ ప్యాకేజీ.

ది json యొక్క పద్ధతి HttpResponse:: సరే() రకం struct ఉదాహరణలో పడుతుంది కోర్ హుడ్ కింద నిర్వహిస్తుంది మరియు క్లయింట్‌కు ప్రతిస్పందనను అందిస్తుంది.

ముగింపు బిందువును నిర్వచించిన తర్వాత, మీరు సర్వర్ ఉదాహరణను ప్రారంభించవచ్చు మరియు మార్గంలో ఎండ్‌పాయింట్‌ను మౌంట్ చేయవచ్చు.

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

ది HttpServer:: కొత్త ఫంక్షన్ అనేది కొత్త సర్వర్ ఉదాహరణ. ది ప్రధాన ఫంక్షన్ ప్రారంభమవుతుంది, మరియు సర్వర్ మౌంట్ హలో కొత్త యాప్ ఉదాహరణతో హ్యాండ్లర్ ఫంక్షన్. ది కట్టు పద్ధతి పేర్కొన్న URLకు సర్వర్‌ను బంధిస్తుంది మరియు పరుగు ఫంక్షన్ సర్వర్‌ను నడుపుతుంది.

  Actix-endpoint పరీక్ష నుండి ఫలితం

రాకెట్‌తో ఒక సాధారణ వెబ్ సర్వర్‌ను రూపొందించడం

  రాకెట్ URL ప్రివ్యూ

రాకెట్ మినిమలిస్టిక్, కాబట్టి మీరు ఇతర డిపెండెన్సీలు లేకుండా సాధారణ వెబ్ సర్వర్‌ను సెటప్ చేయవచ్చు రాకెట్ గాజు సీసాలు రవాణా చేసేందుకు ఉపయోగించే పెట్టె.

ఒక సాధారణ సర్వర్‌ను ఎలా సెటప్ చేయాలో ఇక్కడ ఉంది హలో వరల్డ్! రాకెట్ ఉపయోగించి ముగింపు స్థానం:

ముందుగా, మీ సర్వర్‌కు అవసరమైన డిపెండెన్సీలను దిగుమతి చేయండి.

 #![feature(proc_macro_hygiene, decl_macro)] 

#[macro_use]
extern crate rocket;

// imports from the Rocket crate
use rocket::response::content;
use rocket::State;

ది #![లక్షణం(proc_macro_hygiene, decl_macro)] లక్షణం రాకెట్ ఫ్రేమ్‌వర్క్ కోసం రస్ట్ ప్రయోగాత్మక లక్షణాలను ప్రారంభిస్తుంది. ది #[స్థూల_ఉపయోగం] లక్షణం నుండి మాక్రోలను దిగుమతి చేస్తుంది రాకెట్ మాడ్యూల్.

అభ్యర్థనపై HTMLను అందించే హ్యాండ్లర్ ఫంక్షన్ ఇక్కడ ఉంది:

 #[get("/")] 
fn hello_world() -> content::Html<&'static str> {
    content::Html("<h1>Hello, world!</h1>")
}

ది హలో_ప్రపంచం ఫంక్షన్‌తో HTML స్టాటిక్ స్ట్రింగ్‌ను అందిస్తుంది కంటెంట్::Html ఫంక్షన్.

సర్వర్ కోసం కాన్ఫిగరేషన్ స్ట్రక్ట్ డిక్లరేషన్ ఇక్కడ ఉంది (రాకెట్ ఫ్రేమ్‌వర్క్ కన్వెన్షన్):

 struct Config { 
    port: u16,
}

#[get("/port")]
fn port(config: State<Config>) -> String {
    format!("Server running on port {}", config.port)
}

మీరు సర్వర్‌ను అమలు చేసినప్పుడు, మీరు అభ్యర్థనలను చేయవచ్చు /పోర్ట్ పోర్ట్ స్థితి కోసం ముగింపు స్థానం.

చివరగా, మీరు దీనితో సర్వర్ ఉదాహరణను సృష్టిస్తారు మండించు ఫంక్షన్. కాన్ఫిగరేషన్‌లను జోడించండి, మార్గాలను మౌంట్ చేయండి మరియు సర్వర్‌ను ప్రారంభించండి:

 fn main() { 
    let config = Config { port: 8000 };

    rocket::ignite()
        .manage(config)
        .mount("/", routes![hello_world, port])
        .launch();
}

ది config వేరియబుల్ అనేది ఒక ఉదాహరణ కాన్ఫిగర్ నిర్మాణం. ది మండించు ఫంక్షన్ సర్వర్ ఉదాహరణను ప్రారంభిస్తుంది, ది నిర్వహించడానికి పద్ధతి సర్వర్‌కు కాన్ఫిగరేషన్‌ను జోడిస్తుంది మరియు మౌంట్ పద్ధతి బేస్ రూట్లలో హ్యాండ్లర్ ఫంక్షన్‌ను మౌంట్ చేస్తుంది. చివరగా, ది ప్రయోగ పద్ధతి పేర్కొన్న పోర్ట్‌లో వినడానికి సర్వర్‌ను ప్రారంభిస్తుంది.

ఎక్సెల్‌లో 2 కాలమ్‌లను ఎలా కలపాలి

మీరు WASMతో రస్ట్‌లో శక్తివంతమైన వెబ్ అప్లికేషన్‌లను రూపొందించవచ్చు

WebAssembly (WASM) అనేది బ్రౌజర్‌లు మరియు ఇతర పరికరాలలో అమలు చేయడానికి రూపొందించబడిన బైనరీ సూచనల ఆకృతి. WASM తక్కువ-స్థాయి బైట్‌కోడ్ ఆకృతిని అందిస్తుంది, రస్ట్ వంటి ఉన్నత-స్థాయి ప్రోగ్రామింగ్ భాషలను సంకలన లక్ష్యంగా ఉపయోగించవచ్చు.

WASMతో, మీరు మీ రస్ట్ కోడ్‌ని అత్యంత ప్రసిద్ధ బ్రౌజర్‌లు అమలు చేయగల బైనరీ ఆకృతికి కంపైల్ చేయవచ్చు. WASM పూర్తి-స్టాక్ వెబ్ యాప్‌లతో సహా రస్ట్‌లో బలమైన వెబ్ అప్లికేషన్‌లను రూపొందించడానికి అవకాశాల ప్రపంచాన్ని తెరుస్తుంది.