Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
9 yazı bulundu #real-time
.NET 8'den .NET 11'e Real-time'da Gelenler: Stateful Reconnect, Native AOT, SSE ve SignalR Authentication Refresh
Backend SERİ 09

.NET 8'den .NET 11'e Real-time'da Gelenler: Stateful Reconnect, Native AOT, SSE ve SignalR Authentication Refresh

.NET 8 stateful reconnect'i, .NET 9 polymorphic hub parametrelerini, ActivitySource'u ve SignalR için Native AOT'yi, .NET 10 TypedResults.ServerSentEvents'i getirdi; .NET 11 ise bağlantıyı koparmadan token yenileyen authentication refresh'i ekliyor. AOT'de 28 MB'a karşı 82 MB ölçümü, strongly typed hub'ın AOT uyarısı, iptal edilebilir hub çağrıları, OpenAPI 3.2'de SSE ve eski ASP.NET SignalR.

8 Kas 2026 11 dk 6
SignalR'ı Scale-Out Etmek ve Production'da İşletmek: Sticky Session, Redis Backplane, Azure SignalR Service ve İzleme
Backend SERİ 08

SignalR'ı Scale-Out Etmek ve Production'da İşletmek: Sticky Session, Redis Backplane, Azure SignalR Service ve İzleme

Birden fazla sunucuda SignalR için iki şey gerekir: negotiate ile bağlantıyı aynı sunucuya götüren sticky session ve mesajları sunucular arasında taşıyan bir backplane. Nginx ile gerçek hata mesajları, skipNegotiation istisnası, Redis backplane ve kanal prefix'i, Redis kesintisinde kaybolan mesajlar, Azure SignalR Service ve SignalR metric'leri ile tracing.

8 Kas 2026 11 dk 5
SignalR'da Dayanıklılık: Automatic Reconnect, Stateful Reconnect, Streaming ve MessagePack
Backend SERİ 07

SignalR'da Dayanıklılık: Automatic Reconnect, Stateful Reconnect, Streaming ve MessagePack

Stateful reconnect yalnızca anında toparlanan kısa kopuşlarda mesaj kaybını önler; saniyeler süren kesintide yeni bağlantı ve kayıp mesaj var. Jitter'lı retry policy, onreconnected'da grupları yeniden kurmak, IAsyncEnumerable ile server ve client streaming, iptal, MessagePack'in byte kazancı ile PascalCase ve tarih tuzağı, yavaş istemci limitleri.

8 Kas 2026 10 dk 4
SignalR'da Authentication, Authorization ve Güvenlik: JWT, access_token Query String ve Hub Method Policy'leri
Backend SERİ 06

SignalR'da Authentication, Authorization ve Güvenlik: JWT, access_token Query String ve Hub Method Policy'leri

SignalR'da kullanıcı bağlanırken bir kez doğrulanır; token süresi dolsa da rol değişse de bağlantı varsayılan olarak açık kalır. OnMessageReceived ile access_token, token'ın log'lara düşmesi, accessTokenFactory, hub ve method policy'leri, HubInvocationContext ile resource-based kontrol, IHubFilter ile rate limiting, mesaj boyutu, Origin ve CloseOnAuthenticationExpiration.

8 Kas 2026 11 dk 4
SignalR'da Kullanıcılar, Gruplar ve Connection Yaşam Döngüsü: IHubContext ile Sunucunun Her Yerinden Mesaj Göndermek
Backend SERİ 05

SignalR'da Kullanıcılar, Gruplar ve Connection Yaşam Döngüsü: IHubContext ile Sunucunun Her Yerinden Mesaj Göndermek

Clients.User bir kullanıcının bütün sekmelerine gider, grup üyeliği ise bağlantıya aittir ve yeniden bağlanmada kaybolur. IUserIdProvider, Caller/Others/OthersInGroup, OnConnectedAsync ile OnDisconnectedAsync'in beklenmedik sırası, Redis'te sayaçla presence ve IHubContext ile endpoint'ten, BackgroundService'ten ve consumer'dan bildirim göndermek.

8 Kas 2026 10 dk 4
ASP.NET Core SignalR'a Giriş: Hub, Strongly Typed Hub ve Angular'dan @microsoft/signalr ile Bağlanmak
Backend SERİ 04

ASP.NET Core SignalR'a Giriş: Hub, Strongly Typed Hub ve Angular'dan @microsoft/signalr ile Bağlanmak

SignalR hub'ı her çağrıda yeniden oluşturulan, transient bir handler'dır; state tutmaz, istemciye gösterilecek hatayı HubException ile verir. AddSignalR ve MapHub, Hub<IClient> ile tip güvenli çağrılar, transport negotiation, Angular'da HubConnection'ı signal yayınlayan bir service'e kapsüllemek ve AllowCredentials ile açık origin listesi.

8 Kas 2026 11 dk 5
Server-Sent Events Derinlemesine: TypedResults.ServerSentEvents, Last-Event-ID ile Kaldığı Yerden Devam ve Proxy Tuzakları
Backend SERİ 03

Server-Sent Events Derinlemesine: TypedResults.ServerSentEvents, Last-Event-ID ile Kaldığı Yerden Devam ve Proxy Tuzakları

SSE'de kaçırılan event'leri telafi etmek için her event'e EventId ver, Last-Event-ID header'ından sonrasını yeniden gönder ve bağlanır bağlanmaz bir heartbeat yolla. SseItem<T>, retry, CancellationToken, Nginx gzip ve timeout tuzakları, HTTP/1.1'in 6 bağlantı limiti, Angular'da EventSource'u Observable'a sarmak ve header gerektiğinde fetch ile okumak.

8 Kas 2026 14 dk 4
ASP.NET Core'da Çıplak WebSocket: UseWebSockets, Receive Döngüsü, Close Handshake ve Angular Client
Backend SERİ 02

ASP.NET Core'da Çıplak WebSocket: UseWebSockets, Receive Döngüsü, Close Handshake ve Angular Client

Çıplak WebSocket'te mesajı EndOfMessage gelene kadar biriktirip boyutla sınırlaman, socket'e tek bir döngüden yazman ve Origin'i kendin kontrol etmen gerekir. Receive döngüsü, close handshake, KeepAliveTimeout, Channel ile gönderim kuyruğu, connection registry, compression riski ve Angular'da RxJS webSocket() ile backoff'lu yeniden bağlanma.

8 Kas 2026 13 dk 4
Real-time Seçenekleri: Polling, Long Polling, Server-Sent Events, WebSocket ve SignalR — Hangisi Ne Zaman?
Backend SERİ 01

Real-time Seçenekleri: Polling, Long Polling, Server-Sent Events, WebSocket ve SignalR — Hangisi Ne Zaman?

Tek yönlü bildirim için SSE, çift yönlü düşük gecikme için WebSocket ya da SignalR, nadiren değişen veri için polling yeterli. Aynı sipariş durumunu beş teknikle yapıp gecikmeyi, istek sayısını ve bağlantı başına belleği ölçüyoruz; karar tablosu, WebTransport'un durumu ve neden her şeyi real-time yapmamak gerektiği.

8 Kas 2026 11 dk 4
Blog Haritası