Rust'ta Temel Bir HTTP Web Sunucusu Nasıl Oluşturulur

Rust'ta Temel Bir HTTP Web Sunucusu Nasıl Oluşturulur
Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

HTTP, bilgi ve veri aktarımı için bir istemci-sunucu mimarisi kullanır. Rust gibi sunucu tarafı programlama dillerinin özelliklerinden biri, HTTP tabanlı hizmetlerle etkileşim için sunucular ve istemci uygulamaları geliştirmektir.





bilgisayarda instagram canlı nasıl izlenir

Rust, güvenlik, performans ve güvenilirlik özellikleri sayesinde HTTP sunucuları oluşturmak için uygundur. Rust'ın Actix ve Rocket gibi üçüncü taraf kasaları, yüksek trafiği kaldırabilecek gelişmiş web sunucuları oluşturmak için popülerdir.





GÜNÜN MAKALE VİDEOSU İÇERİKLE DEVAM ETMEK İÇİN KAYDIRIN

HTTP Web Sunucusu Geliştirmek İçin Neden Rust Kullanmalısınız?

Rust, dilin bazı özellikleri tam olarak çoğu web sunucusunu oluşturmak için gereksinimler olduğundan, web sunucusu geliştirme için popülerlik kazandı.





Rust'ı kullanmak, uygulamanızın verimli bir şekilde ölçeklenmesini sağlayarak dili yüksek performanslı uygulamalar oluşturmak için ideal hale getirir. Burada, web sunucunuz ve diğer sunucu tarafı uygulamalarınız için Rust kullanmayı düşünmeniz için belirli nedenler bulunmaktadır.

Rust'ın Yüksek Performansı

Yüksek performans, Rust'ın HTTP web sunucuları oluşturmak için mükemmel bir seçim olmasının nedenlerinden biridir. Rust, bellek ve CPU dahil olmak üzere sistem kaynaklarına düşük düzeyde erişim sağlayarak, diğer sunucu tarafı dillerinden daha az kaynakla daha hızlı çalışan kod yazmanıza olanak tanır.



Ek olarak, Rust'ın sahiplik sistemi, bazı sunucu tarafı dillerinin yavaş olmasının nedenlerinden biri olan derleme zamanında çöp toplama ihtiyacını ortadan kaldırır.

Emniyet ve güvenlik

Rust'ın bellek yönetimi sahiplik sistemi, dili web sunucusu geliştirme için güvenli hale getirir. Bellek sızıntılarına ve diğer güvenlik açıklarına yol açabilecek boş veya sarkan işaretçi referanslarıyla karşılaşmazsınız.





Rust'ın sahiplik sistemi sunucunuzu ve uygulamalarınızı güvende tutmak için bu yaygın hataları önler. Rust ayrıca arabellek taşmalarını ve bellekle ilgili diğer hataları önlemeye de odaklanır.

eşzamanlılık

Eşzamanlılık, bir programın birden çok birimini çıktıyı etkilemeden sıra dışı bir şekilde çalıştırma yeteneğidir. Eşzamanlı bir programın çıktısı, eşzamansız bir programın çıktısıyla aynı olmalıdır.





Sunucuların aynı anda birden çok isteği işlemesi gerektiğinden, eşzamanlılık uygulamanızın performansını önemli ölçüde etkileyebilir. Rust, hafif bir diş açma modeliyle bir arada bulunma desteği sağlar.

Rust'ta eşzamanlı programlamanın sosu, sahiplik sisteminin kilitlere ve diğer senkronizasyon ilkelerine ihtiyaç duymadan iş parçacığı güvenli kod yazmanıza izin vermesidir.

Rust, Modern Aletler Sağlar

Rust Standart Kitaplığı ve Rust ekosistemindeki üçüncü taraf paketleri etkili için modern araçlar sağlamak web sunucusu geliştirme .

Rust'ın paket yöneticisi Cargo, bağımlılık yönetimini basitleştirir ve süreçler oluşturur. Ek olarak Rust, sorunsuz kod tamamlama, hata vurgulama ve diğer özellikler sağlayan Rust Analyzer gibi araçlarla mükemmel IDE desteğine sahiptir.

Actix ve Rocket Kitaplıklarına Genel Bakış

Rust'ın Standart Kitaplığı, web sunucuları oluşturmak için ihtiyaç duyacağınız çoğu yardımcı programa sahiptir. Üçüncü taraf kitaplıkları gibi Roket Ve Actix Rust ile sunucu taraflı uygulamalar oluşturmayı basitleştirin.

Actix Ve Roket popüler Rust web çerçeveleridir, ancak kitaplıklar tasarım ve özellikler açısından farklılık gösterir.

Rocket, üretkenliği ve kullanım kolaylığını ön planda tutan üst düzey bir web çerçevesidir. Rocket, Rust'ta web uygulamaları oluşturmak için birçok soyutlama ve sözdizimi şekeri sağlar. Rocket, güçlü yazma ve sezgisel API tasarımıyla da popülerdir.

Rocket'i projenize bir bağımlılık olarak ekleyebilirsiniz. şarj.toml Rust'ta web uygulamaları oluşturmaya başlamak için dosya:

 [dependencies] 
rocket = "0.4.11"

Actix-web ise performans ve ölçeklenebilirliğe öncelik veren düşük seviyeli bir çerçevedir. Actix, aktör tabanlı bir eşzamanlılık modelinden yararlanır ve performansı yüksek web uygulamaları oluşturmak için paketi ideal hale getiren bloke olmayan G/Ç sağlar.

Actix'i bir proje bağımlılığı olarak ekleyin. bağımlılıklar senin bölümün şarj.toml dosya:

 [dependencies] 
actix-web = "4.3.1"

Projeniz için bir kitaplık seçmek, projenizin özelliklerine, kitaplığın özelliklerine ve Rust ve HTTP deneyiminize bağlı olacaktır.

Rust'ta Basit Bir Web Sunucusu Oluşturma

Bir Rust projesi oluşturduktan ve Rocket veya Actix çerçevelerinden herhangi birini projenizin bağımlılıklarına ekledikten sonra, şarj.toml dosya, Rust'ta bir web sunucusu oluşturmaya hazırsınız.

Actix ile Basit Bir Web Sunucusu Oluşturma

  Actix GitHub URL önizlemesi

Rust'ta web hizmetleri oluştururken istekler için bir seri hale getirici kullanabilirsiniz.

Serde, Rust türleri ve JSON, YAML ve TOML gibi veri biçimleri arasında serileştirme ve seri durumdan çıkarma için popüler bir Rust kitaplığıdır. Serde, Rust veri yapıları ile diğer veri formatlarındaki karşılık gelen temsiller arasında veri dönüşümünü tanımlamak için bir çerçeve sağlar.

Serde'yi projeniz için bir üçüncü taraf paketi olarak eklemek için direktif burada.

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

Serde ve Actix'i proje bağımlılıkları olarak ekledikten sonra, Rust ile temel bir web sunucusu oluşturabilirsiniz. Basit bir ayarı şu şekilde yapabilirsiniz: Selam Dünya! Actix ile istemciye bir dizi yazan web sunucusu:

İlk olarak, gerekli modülleri ve türleri sistemden içe aktarın. actix_web Ve çekirdek kasalar:

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

kullanacaksın çekirdek bir yapı ile müşteriye bir mesaj seri hale getirmek için. Serde, istemci için yapıyı JSON'a dönüştürecektir. İşte mesajın yapısı:

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

Artık uç nokta için işleyici işlevini tanımlayabilirsiniz. İşleyici işlevinizin en üstünde, özel davranışlar için dekoratörler ekleyebilirsiniz:

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

bu Merhaba işleyici işlevi GET isteklerini işler. İşlev, şunu uygulayan bir tür döndürür: Cevap vermek gelen özellik Actix paket.

bu json yöntemi HttpResponse::Tamam() type, bir yapı örneği alır ki Çekirdek başlığın altında işler ve müşteriye yanıtı döndürür.

Uç noktayı tanımladıktan sonra, bir sunucu örneği başlatabilir ve uç noktayı bir rotaya bağlayabilirsiniz.

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

bu Http Sunucusu::yeni işlev yeni bir sunucu örneğidir. bu ana işlev başlar ve sunucu Merhaba yeni uygulama örneği ile işleyici işlevi. bu bağlamak yöntemi, sunucuyu belirtilen URL'ye bağlar ve koşmak işlev sunucuyu çalıştırır.

  Actix uç noktası testinden elde edilen sonuç

Rocket İle Basit Bir Web Sunucusu Kurmak

  Roket URL önizlemesi

Rocket minimalisttir, bu nedenle basit bir web sunucusunu herhangi bir bağımlılık olmadan kurabilirsiniz. Roket sandık.

ile basit bir sunucunun nasıl kurulacağı aşağıda açıklanmıştır. Selam Dünya! Roket kullanarak uç nokta:

Öncelikle, sunucunuz için gerekli bağımlılıkları içe aktarın.

 #![feature(proc_macro_hygiene, decl_macro)] 

#[macro_use]
extern crate rocket;

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

bu #![feature(proc_macro_hygiene, decl_macro)] niteliği, Roket çerçevesi için Rust deneysel özelliklerini etkinleştirir. bu #[makro_kullanım] öznitelik, makroları roket modül.

İşte istek üzerine HTML sunan bir işleyici işlevi:

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

bu Selam Dünya işlev, bir HTML statik dizesi döndürür. içerik::Html işlev.

İşte sunucu için bir yapılandırma yapı bildirimi (Rocket çerçeve kuralı):

 struct Config { 
    port: u16,
}

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

Sunucuyu çalıştırdığınızda, sunucuya istekte bulunabilirsiniz. /liman bağlantı noktası durumu için uç nokta.

Son olarak, ile bir sunucu örneği oluşturacaksınız. tutuşturmak işlev. Konfigürasyonları ekleyin, yolları bağlayın ve sunucuyu başlatın:

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

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

bu yapılandırma değişken, örneğinin bir örneğidir Yapılandırma yapı bu tutuşturmak işlevi bir sunucu örneğini başlatır, üstesinden gelmek yöntemi, yapılandırmayı sunucuya ekler ve binmek yöntem, işleyici işlevini temel yollara bağlar. Son olarak, öğle yemeği yöntem belirtilen bağlantı noktasında dinlemek için sunucuyu başlatır.

WASM ile Rust'ta Güçlü Web Uygulamaları Oluşturabilirsiniz

WebAssembly (WASM), tarayıcılarda ve diğer cihazlarda yürütme için tasarlanmış bir ikili yönerge biçimidir. WASM, Rust gibi daha yüksek seviyeli programlama dillerinin derleme hedefi olarak kullanabileceği düşük seviyeli bir bayt kodu formatı sağlar.

WASM ile, Rust kodunuzu en popüler tarayıcıların çalıştırabileceği bir ikili biçimde derleyebilirsiniz. WASM, tam yığın web uygulamaları da dahil olmak üzere Rust'ta sağlam web uygulamaları oluşturmak için bir olasılıklar dünyasının kapılarını aralıyor.