Blazor, Microsoft'un web arayüzlerini JavaScript yerine büyük ölçüde C# ile geliştirmeyi sağlayan çerçevesidir. ASP.NET Core'un bir parçasıdır ve özellikle .NET ekosisteminde çalışan ekiplerin, arka uç ile ön yüzü aynı dil ve araçlarla yazmasına imkân verir.
Blazor nasıl çalışır?
Blazor uygulamaları bileşenlerden (component) oluşur. Her bileşen, HTML işaretlemesi ile C# kodunu bir arada barındıran .razor dosyasıdır.
<h3>Sayaç: @sayi</h3>
<button class="btn" @onclick="Arttir">Arttır</button>
@code {
private int sayi = 0;
private void Arttir() => sayi++;
}
Butona tıklandığında C# metodu çalışır ve arayüz otomatik güncellenir.
Çalışma modları
Güncel Blazor sürümleri, her sayfa veya bileşen için farklı çalışma modu seçmeye izin verir:
Statik sunucu taraflı render (SSR)
Sayfa sunucuda HTML olarak üretilir ve tarayıcıya gönderilir. Hızlı ilk yükleme ve iyi SEO sağlar. Etkileşim gerektirmeyen sayfalar için idealdir.
Etkileşimli Server modu
Bileşen sunucuda çalışır; tarayıcı ile sunucu arasında gerçek zamanlı bir bağlantı (SignalR) kurulur. Tıklamalar sunucuya iletilir, değişen arayüz parçaları geri gönderilir. İlk yükleme hafiftir, veriye doğrudan erişim kolaydır; ancak sürekli bağlantı ve sunucu kaynağı gerektirir.
Etkileşimli WebAssembly modu
.NET çalışma zamanı ve uygulama kodu tarayıcıya indirilir, kod tamamen kullanıcının cihazında çalışır. Sunucu yükü azalır, çevrimdışı senaryolar mümkün olur; ancak ilk indirme boyutu daha büyüktür.
Auto modu
İlk ziyarette Server modu ile hızlıca etkileşim sağlanır, arka planda WebAssembly dosyaları indirilir ve sonraki ziyaretlerde WebAssembly kullanılır.
Avantajları
- Tek dil: Model sınıfları, doğrulama kuralları ve yardımcı kodlar sunucu ile istemci arasında paylaşılabilir.
- Güçlü tip sistemi: Derleme zamanında yakalanan hatalar, çalışma zamanı sürprizlerini azaltır.
- .NET ekosistemi: NuGet paketleri, dependency injection ve tanıdık geliştirme araçları.
- Bileşen kütüphaneleri: Tablo, form, grafik gibi hazır bileşen setleri geliştirmeyi hızlandırır.
Sınırlamaları
- JavaScript ekosistemi kadar geniş bir bileşen ve topluluk havuzu yoktur.
- WebAssembly modunda ilk yükleme boyutu, içerik odaklı halka açık siteler için dezavantaj olabilir.
- Server modunda eş zamanlı kullanıcı sayısı arttıkça sunucu kaynağı planlaması gerekir.
Blazor ne zaman doğru seçim?
İyi uyduğu alanlar:
- Şirket içi yönetim panelleri ve iş uygulamaları
- Yetkilendirmeli müşteri portalleri
- Form ağırlıklı veri giriş ekranları
- Arka ucu zaten .NET olan projeler
Daha az uygun olabileceği alanlar:
- Hızın ve SEO'nun kritik olduğu, içerik odaklı tanıtım siteleri (bu tür siteler için statik web sitesi veya SSR daha uygundur)
- Çok özel animasyon ve etkileşim gerektiren tüketici uygulamaları
Mimari öneriler
- İş mantığını bileşenlerin içine gömmek yerine servis sınıflarına taşıyın.
- Veri erişimini doğrudan bileşenden değil, servis katmanı veya Web API üzerinden yapın.
- Büyük listelerde sanallaştırma (virtualization) kullanın.
- Yetkilendirmeyi yalnızca arayüzde değil, sunucu tarafında da uygulayın.
Sık sorulan sorular
Blazor öğrenmek için JavaScript bilmek gerekir mi?
Temel uygulamalar için gerekmez. Ancak tarayıcı API'leri veya bazı kütüphanelerle çalışırken JavaScript ile birlikte çalışma (interop) gerekebilir.
Blazor ile mobil uygulama yapılabilir mi?
.NET MAUI ile Blazor bileşenleri yerel bir kabuk içinde mobil ve masaüstü uygulamalarda kullanılabilir (Blazor Hybrid).
Sonuç
Blazor, .NET geliştiricilerine web arayüzünü de C# ile yazma imkânı veren güçlü bir çerçevedir. Özellikle yönetim panelleri ve iş uygulamalarında geliştirme hızı ve kod paylaşımı açısından büyük avantaj sağlar. Blazor veya ASP.NET Core tabanlı bir yönetim paneli için teklif isteyebilirsiniz.