Actix-web: Dünyanın En Hızlı Web Framework'lerinden Birini Öğrenin

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Rust dünyasında web geliştirme denilince akla gelen ilk isimlerden biri Actix-web'dir. Yıllardır TechEmpower gibi bağımsız hız testlerinde dünyanın en üst sıralarında yer almasıyla ün kazanmıştır.
Actix-web; tip güvenliği, hız ve genişletilebilirlik üzerine kurulmuş, asenkron bir web framework'üdür.

1. Mimari Yapı ve Hızın Kaynağı​

Actix-web, başlangıçta Rust'ın Actor Model kütüphanesi üzerine inşa edilmişti (ismini buradan alır), ancak modern sürümleri doğrudan Tokio runtime'ı üzerinde çalışır. Her bağlantı birer asenkron "Task" olarak işlenir, bu da sunucunun aynı anda on binlerce isteği bloklanmadan yönetmesini sağlar.

2. Temel Bileşenler​

Bir Actix-web uygulaması üç ana parçadan oluşur:
  • App: Uygulamanızın yapılandırması (route'lar, middleware'ler).
  • HttpServer: Gelen bağlantıları kabul eden sunucu katmanı.
  • Handlers: Belirli bir yola (route) gelen isteği işleyen fonksiyonlar.
Rust
Kod:
use actix_web::{get, App, HttpResponse, HttpServer, Responder};

#[get("/merhaba")]
async fn merhaba() -> impl Responder {
    HttpResponse::Ok().body("Actix-web dünyasına hoş geldiniz!")
}

#[actix_web::main] // Tokio tabanlı asenkron giriş noktası
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new().service(merhaba)
    })
    .bind(("127.0.0.1", 8080))?
    .run()
    .await
}

3. Extractors: Veriye Güvenli Erişim​

Actix-web'in en sevilen özelliklerinden biri Extractors (Ayıklayıcılar) sistemidir. Fonksiyon parametrelerinde ne istediğinizi belirtirsiniz, Actix-web bunu sizin için JSON'dan, URL parametrelerinden veya Header'lardan ayıklar.
Rust
Kod:
use actix_web::web;
use serde::Deserialize;

#[derive(Deserialize)]
struct Bilgi {
    ad: String,
}

// JSON verisini otomatik olarak 'Bilgi' struct'ına dönüştürür
async fn kullanıcı_ekle(item: web::Json<Bilgi>) -> String {
    format!("Hoş geldin {}!", item.ad)
}

4. State Management (Uygulama Durumu)​

Veritabanı bağlantı havuzları veya paylaşılan ayarlar gibi verileri tüm route'lara güvenli bir şekilde aktarmak için web::Data kullanılır. Bu yapı arka planda bir Arc (Atomic Reference Counted) gibi çalışır.

5. Actix-web Neden Tercih Edilmeli?​

AvantajAçıklama
İnanılmaz HızMinimal ek yük (overhead) ve optimize edilmiş HTTP motoru.
Tip GüvenliğiHatalı veri tipleri daha derleme aşamasında yakalanır.
Zengin EkosistemSerde (JSON), Diesel/SQLx (Veritabanı) ve JWT desteği çok güçlüdür.
MiddlewareLog tutma, kimlik doğrulama gibi işlemleri kolayca araya sokabilirsiniz.
 
Geri
Üst