SignalR ile Gerçek Zamanlı .NET Uygulamaları Geliştirme

Hakan Güzel
2 min readSep 1, 2024

--

SignalR, .NET Core ile gerçek zamanlı web uygulamaları geliştirmek için mükemmel bir çözümdür. WebSockets ve diğer uyumlu teknolojileri kullanarak, anında veri iletimi sağlar. Bu rehberde, SignalR kullanarak .NET Core’da gerçek zamanlı uygulamalar nasıl geliştirilir üzerine adım adım bir kılavuz sunacağız. Canlı sohbet uygulamaları, anlık bildirim sistemleri ve gerçek zamanlı veri gösterimleri için kullanılan teknikler ve örnekleri ele alacağız.

1. SignalR’a Giriş

SignalR, ASP.NET Core framework’ün bir parçası olarak, uygulamalarınıza gerçek zamanlı işlevsellik eklemenize olanak tanır. WebSockets gibi teknolojilerle birlikte çalışır, ancak müşterinin desteklemediği durumlarda otomatik olarak uzun anketleme gibi diğer tekniklere geri döner.

2. SignalR Kurulumu

SignalR’ı .NET Core projenize dahil etmek için ilk adım, gerekli NuGet paketlerini projenize eklemektir.

dotnet add package Microsoft.AspNetCore.SignalR

3. Bir SignalR Hub’ı Oluşturma

SignalR, “Hub” adı verilen sınıflar aracılığıyla iletişim kurar. Hub’lar, sunucu ile istemciler arasındaki iletişimi yönetir.

public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}

4. SignalR’ı Yapılandırma

SignalR hub’ınızı uygulamanızın request pipeline’ına ekleyin. Bu, Startup.cs dosyanızın Configure metodunda yapılır.

public void Configure(IApplicationBuilder app)
{
app.UseRouting();

app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chatHub");
});
}

5. Bir İstemci Oluşturma

SignalR JavaScript istemci kitaplığı, tarayıcı tabanlı istemcilerin sunucuya bağlanmasını ve mesaj almasını sağlar.

<!DOCTYPE html>
<html>
<head>
<title>Chat App</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/3.1.6/signalr.min.js"></script>
</head>
<body>
<input type="text" id="userInput" placeholder="Enter name"/>
<input type="text" id="messageInput" placeholder="Enter message"/>
<button onclick="sendMessage()">Send</button>
<ul id="messagesList"></ul>

<script>
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chatHub")
.build();

connection.on("ReceiveMessage", function (user, message) {
const msg = document.createElement("li");
msg.textContent = `${user} says ${message}`;
document.getElementById("messagesList").appendChild(msg);
});

connection.start().catch(err => console.error(err.toString()));

function sendMessage() {
const user = document.getElementById("userInput").value;
const message = document.getElementById("messageInput").value;
connection.invoke("SendMessage", user, message);
}
</script>
</body>
</html>

6. Uygulamalar ve Kullanım Senaryoları

  • Canlı Sohbet Uygulamaları: Yukarıda bahsedilen basit chat uygulaması gibi, kullanıcıların gerçek zamanlı olarak iletişim kurmasını sağlar.
  • Anlık Bildirim Sistemleri: Kullanıcıların olaylar hakkında anında bilgilendirilmesi gereken durumlar için idealdir.
  • Gerçek Zamanlı Veri Gösterimi: Finansal piyasalar veya sosyal medya analizleri gibi, verilerin gerçek zamanlı olarak güncellenmesi gereken uygulamalar.

Sonuç

SignalR, .NET Core ile geliştirilen uygulamalara dinamik ve interaktif özellikler eklemek için güçlü bir araçtır. Bu teknolojiyi kullanarak, kullanıcı deneyimini önemli ölçüde artıran gerçek zamanlı işlevsellikler geliştirebilirsiniz. Uygulama senaryolarınız ne olursa olsun, SignalR entegrasyonu, uygulamanızın çekiciliğini ve işlevselliğini artıracaktır.

--

--