- Rust ile web geliştirirken Django gibi bir framework olmadığı için birçok işi doğrudan elle yapmak gerekiyor
- Rust’ın tip sistemi, performans ve derleme süresi gibi avantajlarından yararlanmak için web geliştirmeyi kolaylaştıracak bir framework’e ihtiyaç var
Gerekli özellikler
- Routing/handler: İstekleri işleyecek handler’lara bağlama işlevi gerekli
- Şablonlar: HTML ve JSON gibi içerikler üretilebilmeli
- Statik dosya sunumu: CSS dosyaları gibi varlıkları sunma işlevi gerekli
- Giriş: Çok kullanıcılı uygulamalar için giriş özelliği gerekli
- Yetki yönetimi: Kullanıcı bazında erişim izinleri yönetilebilmeli
- Veritabanı arayüzü: Veriyi depolama ve yönetme işlevi gerekli
- Yönetim araçları: Temel yönetim işlemlerini destekleyen araçlar gerekli
- WebSocket: Gerçek zamanlı veri aktarımı için WebSocket özelliği gerekli
- Hot reloading: Kod değişikliklerinin anında yansıması gerekli
Ek olarak gerekli özellikler
- Arka plan işleri: Belirli bir takvime göre işler çalıştırılabilmeli
- İzleme/gözlemlenebilirlik: Sistem durumunu izlemeye yönelik işlevler gerekli
- Caching: Performans artışı için caching gerekli
- E-posta ve bildirimler: Parola sıfırlama gibi işlevleri destekleyen bildirim özellikleri gerekli
- Dağıtım araçları: Tutarlı bir dağıtım yöntemi gerekli
- CSS/JS bundling: CSS ve JS dosyalarını etkili biçimde yönetme işlevi gerekli
Mevcut ekosistem
- Web framework’leri: actix-web, axum gibi asgari işlevler sunan framework’ler mevcut
- Kütüphane koleksiyonları: Şablonlar, giriş, yetki yönetimi vb. için çeşitli kütüphaneler var ancak entegre bir çözüm eksik
Yeni web toolkit’i
- nicole's web toolkit (newt): Çeşitli özellikleri bir araya getiren bir web toolkit’i geliştiriliyor
- Hedef: Yeni web uygulamalarına hızlı başlamayı desteklemek
- Plan: Mevcut yapı taşlarını kullanarak entegre bir çözüm sunmak
GN⁺ özeti
- Rust ile web geliştirmeyi kolaylaştıracak entegre bir web framework’üne duyulan ihtiyacı vurguluyor
- Mevcut web framework’leri ve kütüphanelerin sınırlamalarını aşmaya yönelik bir girişimi tanıtıyor
- nicole's web toolkit (newt) ile çeşitli işlevleri bir araya getirerek geliştirici deneyimini iyileştirmeyi hedefliyor
- Django benzeri framework avantajlarını Rust ekosistemine taşıma çabası dikkat çekiyor
- Benzer işlevler sunan diğer projeler arasında actix-web ve axum da bulunuyor
1 yorum
Hacker News görüşü
Rust kullanarak en az çabayla eğlenceli şeyler üretmeyi seven birinin görüşü. Rust verimlilik ve bellek yönetiminde çok iyi olsa da, web geliştirme için Go veya Django'nun daha uygun olduğu düşünülüyor
Rust'un güvenlik sağlaması, geliştiricilerin daha az hata yapmasına yardımcı oluyor ve Notepad gibi basit araçlarla bile kod yazabilmek bir avantaj olarak görülüyor
Web framework'ü olarak Rocket'ın "tembel geliştirici" için en uygun, en iyi framework olduğu düşünülüyor
Rust'un pattern matching özelliği kullanılırsa router'a gerek olmadığı, authentication'ın da dilin ya da framework'ün değil başka bir mesele olduğu düşünülüyor
CSS/JS araçlarının Rust frontend framework'leri için uygun olmadığı, buna rağmen Rust'un frontend web tarafında da yeterince olgun olduğu düşünülüyor
Rocket framework'ünden hiç bahsedilmemesine şaşırıldığı, Rocket'ın "batteries included" bir framework olmayı hedeflediği düşünülüyor
Rust ile web geliştirme yapmanın fena olmadığı ama concurrency sorunları bulunduğu ve component library seçmenin zor olduğu düşünülüyor
Flutter kullanarak UX'in iyileştirildiği, Rust ile entegrasyonunun kolay olduğu ve bundan memnun kalındığı belirtiliyor
Flutter DOM'a saygı göstermese de, her yere dağıtılabilen UX'i kolayca üretmeye imkan verdiği için cazip bulunuyor
Poem'in FastAPI'ye benzediği ama ilk kurulumda çok fazla boilerplate gerektirdiği düşünülüyor
"Tembel" ifadesi, web framework'ünün genel işleri kendiliğinden halletmesini istemek anlamında kullanılmış; gerçekte ise yine çok iş gerektiği düşünülüyor
loco-rs, poem, rocket gibi projelerin zaten "batteries included" bir deneyim sunduğu ve CLI'ın bu sürece rehberlik ettiği düşünülüyor
F#'ın Rust'a benzer bir type system ve araç seti sunduğu ama async işlemler ve bellek yönetiminin daha az karmaşık olduğu düşünülüyor
Yazarın Rust için Spring Boot benzeri bir framework istediği düşünülüyor