Blazor, NET ve C# kullanarak web uygulamalarını geliştirmede kullanılan bir framework'tür SignalR ise gerçek zamanlı web uygulamaları için Microsoft tarafından geliştirilen açık kaynaklı bir kütüphanedir Bu rehber, Blazor uygulamalarında SignalR kullanarak gerçek zamanlı web uygulamaları geliştirmek için bir kılavuzdur Blazor, Blazor Server ve Blazor WebAssembly olmak üzere iki farklı çalışma modu kullanır Blazor Server, sunucuda çalışır ve SignalR ile birleştirilerek gerçek zamanlı uygulamalar yapılabilir Blazor WebAssembly ise kullanıcının tarayıcısında çalışır ve performans açısından daha iyi sonuçlar verir Bu framework, NET ve C# bilgisine sahip kullanıcılar için öğrenmesi kolay bir araçtır

Blazor, .NET ve C# kullanarak web uygulamaları oluşturmanıza olanak tanıyan bir framework'tür. Bu framework, iki farklı çalışma modu ile kullanılabilir: Blazor Server ve Blazor WebAssembly. Ancak gerçek zamanlı uygulamalar yapmak istiyorsanız SignalR'a ihtiyacınız olacaktır. Bu rehber, Blazor uygulamalarınızda SignalR kullanarak gerçek zamanlı web uygulamaları geliştirmek için bir kılavuzdur.
SignalR, gerçek zamanlı web uygulamaları için Microsoft tarafından geliştirilen açık kaynak bir kütüphanedir. Bu kütüphane, sunucu-tarafı kodunu yönetmek için hub sınıflarını kullanır ve istemci-tarafı kodu için C# veya JavaScript kullanabilirsiniz. SignalR'ı ASP.NET Core projenize NuGet paketi olarak ekledikten sonra, hub sınıfı kullanarak sunucu-tarafı kodunu yönetmeye başlayabilirsiniz. İstemci-tarafı kodunu ise C# veya JavaScript kullanarak yazabilirsiniz.
SignalR Nedir?
SignalR, Microsoft tarafından geliştirilen ve gerçek zamanlı web uygulamaları için kullanılan açık kaynaklı bir kütüphanedir. Bu kütüphane kullanılarak web uygulamaları, anlık bildirimler, sohbet uygulamaları ve oyunlar gibi gerçek zamanlı uygulamalar geliştirilebilmektedir. SignalR, sunucu ve istemci arasında bir websocket bağlantısı oluşturarak, sunucudaki verilerin anlık bir şekilde istemciye iletilmesini sağlar.
Bunun yanı sıra SignalR, birden fazla bağlantının bir arada kullanılabildiği ölçeklenebilir bir yapı sunar ve bu özelliği sayesinde çoklu kullanıcıların tek bir veri kaynağına, yani sunucuya bağlanması için ideal bir çözüm sunar.
SignalR'ın sağladığı bu özellikler, web uygulamalarının zamanlama problemlerinin azalmasına yardımcı olur ve kullanıcılara gerçek zamanlı bir deneyim sunar.
Blazor Nedir?
Blazor, Microsoft tarafından geliştirilmiş bir web uygulama geliştirme framework'üdür. Bu framework, .NET ve C# kullanarak web uygulamaları geliştirmeye olanak sağlar. HTML, CSS ve JavaScript kullanımını bütünüyle ortadan kaldıran bu framework, C# kodu kullanarak UI oluşturmanızı sağlar.
Blazor'da birden fazla çalışma modu vardır, Blazor Server ve Blazor WebAssembly. Blazor Server, sunucuda çalışır ve istemcilerle sinyaller göndererek gerçek zamanlı uygulamalar yapmak için SignalR ile birleştirilebilir. Blazor WebAssembly ise kullanıcının tarayıcısında çalışır ve daha hızlı bir performans sunar. Her iki modda da, Blazor ile birlikte Microsoft'un sağladığı zengin paketler ve özellikler kullanılabilir.
- Blazor Server ve Blazor WebAssembly arasındaki temel fark Blazor Server'ın sunucuda, Blazor WebAssembly'nin ise tarayıcıda çalışmasıdır.
- Blazor Server, daha az veri indirir ve daha yavaş ancak güvenli bir uygulama deneyimi sunar. Blazor WebAssembly ise tam tersi şekilde, hızlı ancak biraz daha az güvenlidir.
- Blazor WebAssembly, tarayıcı seviyesinde çalışır, bu nedenle birçok hizmet erişiminde kısıtlamalar yaşanabilir. Ancak Blazor Server, sunucu seviyesinde yer alır ve bu nedenle erişim kısıtlamaları uygulanmaz; duruma göre gerekli ayarlamalar yapılabilir.
Blazor, web uygulamaları oluşturmak için oldukça güçlü bir araçtır ve .NET ve C# programlama dili bilgisi olanlar için öğrenmesi oldukça kolay bir framework'tür.
Blazor Server ve WebAssembly
Blazor, .NET ve C# kullanarak web uygulamaları oluşturmaya olanak tanıyan bir framework'tür. Bu framework, iki farklı çalışma modu ile kullanılabilir: Blazor Server ve Blazor WebAssembly.
Blazor Server uygulamaları sunucuda çalışır ve istemcilere sinyaller göndererek gerçek zamanlı uygulamalar yapmak için SignalR ile birleştirilebilir. Bu modda herhangi bir kullanıcının tüm talepleri sunucuda işlenir ve sonuçları kullanıcının tarayıcısına gönderilir. Sunucuda çalışan bir Blazor uygulaması, SignalR kullanarak gerçek zamanlı özellikler sağlayabilir. Bu uygulamalar, web sunucuları ve internet ayarları tarafından sınırlı olabilir ve bazı senaryolarda web sunucusu işlemci kaynaklarının paylaşımı nedeniyle gecikmeler yaşayabilir.
Blazor WebAssembly uygulamaları ise kullanıcının tarayıcısında çalışır ve gerçek zamanlı uygulamalar için SignalR ile birleştirilebilir. Bu modda, tüm uygulama kodu tarayıcıda çalışır ve sunucu işlemcisi kullanılmaz. Bu nedenle, Blazor WebAssembly uygulamaları performans açısından daha iyi sonuçlar verebilir. Ancak, SignalR'ı kullanarak gerçek zamanlı özellikler sağlamak için Blazor WebAssembly uygulamalarının sunucular tarafından uygun şekilde yapılandırılması gerekir.
Blazor Server
Blazor Server, sunucuda çalışır ve istemcilere sinyaller göndererek gerçek zamanlı uygulamalar yapmak için SignalR ile birleştirilebilir. Blazor Server, uygulamanın sunucu ve istemci arasındaki bağlantıyı korumasını sağlar. Uygulamalar, istemcilerden alınan sinyalleri işleyebilir ve istemcilere veri gönderebilir. Bu, uygulamanızdaki değişikliklerin anında güncellenmesini sağlar ve kullanıcıların gerçek zamanlı olarak etkileşimde bulunmasına izin verir. Blazor Server, yüksek performanslı ve ölçeklenebilir uygulamalar oluşturmak için ideal bir seçimdir.
Blazor WebAssembly
Blazor WebAssembly, Blazor'ın iki farklı çalışma modundan biridir. Bu mod, kullanıcının tarayıcısında çalışır ve sunucuya olan bağlılığı en aza indirir. Tarayıcıda çalıştığı için, kullanıcının internet hızına bağlı olarak işlem hızı değişebilir. Blazor WebAssembly, React veya Angular gibi diğer framework'lerle karşılaştırıldığında, daha hızlı ve daha kolay bir şekilde geliştirme süreci sunar.
Blazor WebAssembly kullanarak gerçek zamanlı uygulamalar geliştirmek için SignalR kullanabilirsiniz. SignalR, Blazor WebAssembly uygulamanız ile sunucu arasında veri akışını sağlar. Sunucuda gerçekleşen herhangi bir değişiklik, SignalR sayesinde tarayıcıya anında yansıtılabilir. Bu, kullanıcılara daha iyi bir deneyim sunar ve uygulamanızın daha dinamik hale gelmesini sağlar.
Blazor WebAssembly ile SignalR kullanırken, SignalR'ı projenize ekledikten sonra hub sınıfı kullanarak sunucu taraflı kodu yönetebilirsiniz. Hub sınıfı, istemcilerle iletişim kurmak için yöntemlere sahiptir. Aynı zamanda, gerçek zamanlı uygulamalar yaparken istemci tarafı kodu için JavaScript veya C# kullanabilirsiniz.
Blazor WebAssembly uygulamaları, tarayıcıda çalıştığı için seçtiğiniz tarayıcının desteğine de bağlı olarak çalışabilirlik sorunları yaşayabilirsiniz. Ancak, internet hızı ve sunucuya olan bağlılık ihtiyacınızı azaltması nedeniyle, Blazor WebAssembly ve SignalR'ın birleşimi, Blazor Server'a göre daha hızlı ve daha uygun olabilir.
SignalR Nasıl Kullanılır?
Gerçek zamanlı web uygulamaları için Microsoft tarafından geliştirilen açık kaynak kütüphane SignalR, ASP.NET Core projenize NuGet paketi olarak eklenerek kullanılabilir. SignalR ile gerçek zamanlı web uygulamaları geliştirebilmek için öncelikle projenize SignalR paketini eklemeniz gerekiyor. Bu işlem için ASP.NET Core projenize sağ tıklayın ve NuGet Paketleri'ne Git seçeneğine tıklayın. Açılan pencereden, Microsoft.AspNetCore.SignalR paketini bulun ve seçin. Ardından yüklemek için Yükle düğmesine tıklayın.
SignalR, hub sınıfı kullanarak sunucu taraflı kodu yönetir. Hub sınıfı, istemcilerle iletişim kurmak için yöntemler sağlar. Gerçek zamanlı uygulamalar yapmak için, SignalR hub'ı oluşturmanız gerekmektedir. Bu hub sınıfı, yine SignalR paketinde bulunan Microsoft.AspNetCore.SignalR.Hub sınıfından türetilebilir. Bu hub sınıfında, istemcilerle iletişim kurmak için özel yöntemler ekleyebilirsiniz.
SignalR'ı kullanarak gerçek zamanlı uygulamalar yaparken, istemci tarafı kodu için JavaScript veya C# kullanabilirsiniz. Bunun yanı sıra, SignalR sadece web uygulamalarıyla sınırlı kalmayıp, masaüstü uygulamaları ve mobil uygulamalar gibi diğer uygulamalarla da entegre edilebilir. SignalR, işletmelerin müşterileriyle gerçek zamanlı olarak iletişim kurmasına, anlık bildirimler göndermesine ve hatta oyunlar oluşturmasına olanak tanır.
Hub Oluşturma
SignalR'ın temel bileşenlerinden biri olan Hub, sunucu taraflı kodu yönetmek için kullanılır. SignalR Hub'larının yöntemleri, istemcilerle iletişim kurmak için kullanılır. Hub oluştururken, Microsoft.AspNetCore.SignalR adlı NuGet paketini projenize eklemeniz gerekir.
Aşağıdaki örnek, SignalR Hub'ı oluşturmanıza yardımcı olacaktır:
using Microsoft.AspNetCore.SignalR;namespace HubUygulamasi.Hubs{ public class ChatHub : Hub { public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); } }}
Yukarıdaki örnekte, SendMessage yöntemi, tüm istemcilerin alması için gönderilecek mesajı içeren iki parametre kabul eder. Clients.All.SendAsync yöntemi, tüm istemcilere mesaj göndermek için kullanılır. ReceiveMessage yöntemi, istemcilerden gelen mesajları dinlemek için kullanılır.
Bir Hub oluşturduktan sonra, istemcilerle iletişim kurmak için SignalR'ın JavaScript istemci kitaplığı veya C# Barındırılan İstemcisi kullanabilirsiniz.
SignalR Hub'larını kullanarak gerçek zamanlı web uygulamaları oluşturmak, web uygulamalarınıza dinamik ve etkileşimli bir özellik eklemek için harika bir yoldur.
İstemci Tarafı Kodu
SignalR kullanarak gerçek zamanlı uygulamalar yaparken, istemci tarafı kodu için JavaScript veya C# kullanabilirsiniz. SignalR, hem sunucuda hem de istemci tarafında kullanılabilen bir kütüphanedir. İstemci tarafında, JavaScript veya C# kullanarak SignalR'tan yararlanabilirsiniz.
JavaScript ile SignalR kullanarak, bağlantı oluşturmak için önce SignalR JavaScript istemcisini projenize eklemeniz gerekmektedir. Daha sonra, hub sınıfındaki yöntemlere JavaScript tarafından abone olabilir ve aldığınız mesajlara göre kullanıcı arayüzünü güncelleyebilirsiniz.
C# kullanarak SignalR istemci tarafı kodu yazmak istediğinizde, Microsoft.AspNet.SignalR.Client nuget paketini projenize eklemeniz gerekmektedir. Ardından, hub connection nesnesi oluşturarak, sunucu ile bir bağlantı kurabilirsiniz. Hub connection nesnesi sayesinde, sunucu tarafındaki yöntemlere kolayca erişerek gerçek zamanlı uygulamalar geliştirebilirsiniz.