.NET Core’da SignalR Nedir ve Nasıl Kullanılır?
SignalR, gerçek zamanlı web uygulamaları geliştirmek için kullanılan bir .NET kütüphanesidir. Geliştiricilere, sunucu ve istemci arasında kolayca veri iletebilme yeteneği sağlar. Bu sayede, web uygulamalarında anlık güncellemeler ve etkileşim sağlamak mümkün hale gelir.
SignalR Avantajları
- Gerçek Zamanlı İletişim: SignalR, sunucu ve istemci arasında gerçek zamanlı iletişim kurma yeteneği sunar.
- Çeşitli Taşıyıcılar: WebSocket, Server-Sent Events (SSE), Long Polling gibi farklı taşıyıcıları destekler.
- Kolay Kullanım: Basit bir API yapısıyla karmaşıklığı azaltır.
- Geniş Tarayıcı Desteği: Çoğu modern tarayıcıda ve platformda çalışabilir.
SignalR Kurulumu
dotnet add package Microsoft.AspNetCore.SignalR
Startup.cs Ayarları: Startup.cs dosyasına SignalR’ı kullanmak için gerekli konfigürasyonları ekleyin.
// ConfigureServices metodu içine ekle
services.AddSignalR();
// Configure metodu içine ekle
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chathub");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
SignalR Hub Oluşturma
Hub Sınıfı Oluşturma: ChatHub.cs adında bir sınıf oluşturun.
using Microsoft.AspNetCore.SignalR;
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
Hub’ı Kullanma: İstemci tarafında JavaScript kullanarak hub’ı kullanabilirsiniz.
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chathub")
.build();
connection.on("ReceiveMessage", (user, message) => {
console.log(`${user}: ${message}`);
});
connection.start().then(() => {
connection.invoke("SendMessage", "John", "Hello, World!");
}).catch(err => console.error(err));
Sonuç
Artık .NET Core ile SignalR kullanarak gerçek zamanlı web uygulamaları geliştirmek için temel bir yapıya sahipsiniz. SignalR, etkileşimli ve anlık güncellemeler gerektiren uygulamalar için güçlü bir çözümdür.
Bu makale, SignalR’ın temel kullanımını kapsamaktadır.
Hasan Aslan (Software Developer)