Sistem Programlama
Tauri mi Electron mu? Masaüstü Uygulamada Mimari Seçim
İkisi de web teknolojileriyle masaüstü uygulaması yazdırır; ama biri her uygulamaya bir tarayıcı gömer, diğeri işletim sisteminin web görünümünü kullanır. Boyut, bellek, güvenlik ve platform farkları açısından nasıl karar verdiğimi anlatıyorum.
Web teknolojileriyle masaüstü uygulaması geliştirmek artık istisna değil, varsayılan. Bu alanda iki ana seçenek var: Electron ve Tauri. İkisi de arayüzü HTML, CSS ve JavaScript ile yazmanıza izin verir; asıl fark, bu arayüzün altında ne çalıştığıdır.
Temel mimari fark
Electron, her uygulamanın içine bir Chromium tarayıcısı ve bir Node.js çalışma zamanı paketler. Arayüz her platformda aynı motorla çizilir, arka uç mantığı JavaScript ile yazılır.
Tauri ise tarayıcı paketlemez; işletim sisteminin hâlihazırda sunduğu web görünümünü kullanır (Windows'ta WebView2, macOS'te WKWebView, Linux'ta WebKitGTK). Arka uç mantığı Rust ile yazılır ve arayüz bu mantığa tanımlı komutlar üzerinden ulaşır.
// Rust tarafında tanımlanan bir komut
#[tauri::command]
fn read_stats(path: String) -> Result<Stats, String> {
collect_stats(&path).map_err(|e| e.to_string())
}
// Arayüz tarafında çağrı
// const stats = await invoke('read_stats', { path });Boyut ve bellek
Electron her uygulamayla birlikte bir tarayıcı taşıdığı için kurulum paketleri genellikle onlarca, çoğu zaman yüz megabaytın üzerindedir ve her uygulama kendi tarayıcı süreçlerini çalıştırır. Tauri uygulamaları ise tarayıcıyı işletim sisteminden ödünç aldığı için çok daha küçük paketlerle dağıtılabilir ve boşta daha az bellek tüketme eğilimindedir. Arka planda sürekli çalışan araçlar, sistem tepsisi uygulamaları ve düşük donanımlı makineler için bu fark belirleyicidir.
Güvenlik modeli
Electron'da yanlış yapılandırılmış bir pencere, arayüz koduna Node.js'in tüm gücünü (dosya sistemi, süreç başlatma) açabilir; bu yüzden bağlam yalıtımı ve sınırlı köprüler dikkatle kurulmalıdır. Tauri varsayılan olarak daha kapalıdır: arayüz yalnızca açıkça izin verilen komutlara ve yeteneklere erişebilir. Arka ucun Rust olması da bellek güvenliği hatalarının büyük bir sınıfını derleme anında ortadan kaldırır.
Tauri'nin bedeli
Her seçimin bir bedeli var. Tauri'de arayüz her platformda farklı bir motorla çizildiği için CSS ve web API davranışlarında küçük farklılıklar görülebilir; her hedef platformda test etmek zorunludur. Arka uç için Rust bilgisi gerekir; ekip yalnızca JavaScript biliyorsa öğrenme eğrisi gerçektir. Electron ise olgun ekosistemi, Node.js paketlerine doğrudan erişimi ve her yerde aynı görünen arayüzüyle hâlâ güçlü bir seçenektir.
Nasıl karar veriyorum?
- Tauri: Hafif, sürekli açık kalan veya sistem kaynaklarına yakın çalışan araçlar; performans ve güvenliğin öncelikli olduğu, Rust'ın zaten yığında bulunduğu projeler.
- Electron: Piksel düzeyinde aynı görünmesi gereken karmaşık arayüzler, yoğun biçimde Node.js ekosistemine dayanan uygulamalar ve ekibin yalnızca JavaScript bildiği durumlar.
Sonuç yerine
Doğru soru "hangisi daha iyi?" değil, "bu uygulama nerede ve nasıl yaşayacak?" sorusudur. Kullanıcının makinesinde gün boyu açık kalacak, hızlı açılması ve az yer kaplaması gereken bir araç yazıyorsanız Tauri'nin mimarisi size zaman ve kaynak kazandırır. Arayüz tutarlılığı ve ekosistem genişliği önceliğinizse Electron hâlâ güvenli bir limandır.