Asp .Net Core SignalR 1 - Giriş

Asp .Net Core SignalR 1 - Giriş

Blog Asp .Net Core SignalR 1 - Giriş

Asp .Net Core SignalR 1 - Giriş

SelamünAleyküm, bu yazımızda teorik olarak Asp .Net Core'da SignalR'a giriş yapacağız. Bu yazıda teorik olarak SignalR Nedir? sorusuna cevap vereceğiz, sonraki yazımızda  nasıl çalıştığıyla ilgili detaylı ve pratik bir inceleme yapacağız. 

Asp .Net Core SignalR Nedir?

Asp .Net Core SignalR, projelerimize web işlevselliği   eklemeyi kolaylaştıran open source ( açık kaynaklı ) bir kütüphane/kitaplık olarak bahsedebiliriz. Real Time ( Gerçek Zamanlı) web işlevi, server ( sunucu ) taraflı kodun server üzerinde tetikledikleri olayları bağlı istemcilere ( client/kullanıcı ) göndermesini sağlar. SignalR ile Client ─ Server olarak çift yönlü iletişimler için serverla ileti de gönderebilir.

SignalR'ı Nerelerde kullanabiliriz;

  1. Server'dan sürekli olarak güncellenen: Oyun, Sosyal Medlya Mecraları, Oylama/Seçim, Haritalar ve GPS vb.
  2. Dijital Pano ve izleme uygulamaları: Şirket Panoları, Anlık Satış İstatistikleri veya Sohbet Odaları.
  3. Bildirim Gerektiren: Sosyal Medya Mecraları, E-Posta, Sohbet, Oyun, Seyahat Uyarıları vb. diğer birçok alanda kullanabiliriz.

Asp .Net Core SignalR, server'dan client'a RPC ( Remote Proceduer Call ─ Uzak Yordam Çağrısı ) oluşturmaya yönelik bir API sağlar. RPC server taraflı .Net Core kodu ile client'lardan işlevleri çağırır. Tabî her bir client SDK'sına sahip farklı desteklere sahip platformlar mevcut. Bu nedenle çağrılan yazılım dili farklılık gösterebilir. 

Asp .Net Core'un SignalR'da kullandığı bazı özellikler;

  1. Bağlantı yönetimi otomatik olarak işler.
  2. Tüm bağlı client'lar aynı anda ileti gönderir. Misalen sohbet odaları.
  3. İletileri belirli kullanıcılara veya kullanıcı gruplarına gönderir.
  4. Artan trafiği işlemek için ölçeklendirir.
  5. SignalR Hub Protokolü.

SignalR'da Kullanılan Temel Kavramlar

Taşımalar

SignalR Runtime olarak iletişimi işlemek için 3( üç ) tür teknik/aktarım destekler, sırasıyla;

  1. WebSocket,
  2. Server taraflı gönderilen olaylar,
  3. Uzun Yoklama

Sırasıyla, WebSocket Server taraflı gönderilen olaylar yerine tercih edilir ve Server taraflı gönderilen olaylar Uzun yoklama yerine tercih edilir. Ancak, bu aktarımlarıdan herhangi biri de kullanılabilir. Server ve Client'ın özellikleri içinden en iyi hangisi ise otomatik olarak onu kulanır.

Merkezler

SignalR, Cilent ve Server arasındaki iletişimi kurmak için Hubları kullanır. Bazılarını kısaca izah etmek gerekirse;

Server ( Sunucu)

SignalR uç noktasını kullanıma çağırmakla sorumludur. Uç nokta bir Hub veya Hub<T> alt class'ına ( sınıfına ) eşler. Server, herhangi ir bulut sağlayıcsı ( Azure vb. ) veya Azure SignalR hizmeti kullanılabilir.

Hub

Client ve server arasında iletişim kurmak için bir Hub kullanılır. Hub client/s ile server'ın birbirleri üzerinde yöntemler çağırmasına olanak tanıyan üst düzey işlem hattıdır. Hub'ı tüm bağlı client ile server arasında  Middleware ( ara sunucu ) olarak düşünebiliriz.

Protokoller

SignalR Protokolü, herhangi bir ileti tabanlı aktarım üzerinden iki yönlü RPC'ye yönelik bir protokoldür. Bağlantıdaki taraflardan biri diğer taraf üzerindeki yordamları çağırabilir ve yordamlar sıfır veya daha fazla sonuç veya hata döndürebilir. SignalR iki yerleşik hub protokolü sağlar:

  • Varsayılan olan JSON'ı temel alan bir metin protokolü.
  • Genellikle JSON'dan daha küçük iletiler oluşturan MessagePack'i temel alan ikili protokol.

MessagePack protokolunu kullanmak için hem sunucunun hem de istemcinin yapılandırmayı kabul edip hem sunucu hem de istemcinin bunu desteklemesi gerekir. BlazorPack adlı üçüncü bir merkez protokolü vardır, ancak yalnızca Blazor-Server uygulamalarıyla kullanılır. Blazor-Server barındırma modeli olmadan kullanılamaz.

Cilents ( Kullanıcılar )

Sistemdeki bir client bireysel olarak hareket eder, ancak bir grubun parçasıda olabilir. Tek bir kullanıcı birden çok client uygulamasından bağlanabilir.

Gruplar

Bir grup bir veya daha fazla bağlantıdan oluşur. Sunucu grup oluşturabilir, gruba bağlantı ekleyebilir ve gruptan bağlantıları kaldırabilir. Bir grubun benzersiz tanımlayıcısı olarak davranan belirtilen bir adı vardır. Gruplar, iletileri hedeflemeye yardımcı olmak için bir kapsam belirleme mekanizması görevi görür. Yani, gerçek zamanlı işlevsellik yalnızca adlandırılmış bir grup içindeki kullanıcılara gönderilebilir.

Connections ( Bağlantılar )

Bir hub bağlantısı, yalnızca sunucu ve istemci tarafından bilinen benzersiz bir tanımlayıcıyla temsil edilir. Hub türü başına tek bir bağlantı vardır. Her istemcinin sunucuyla benzersiz bir bağlantısı vardır. Başka bir ifadeyle, tek bir kullanıcı birden çok istemcide temsil edilebilir, ancak her istemci bağlantısının kendi tanımlayıcısı vardır.

Customers ( Müşteriler )

Cilent bir nesne aracılığıyla ( HubConnection ) server'ın uç noktasına bağlantı kurmakla sorumludur. Merkez bağlantısı her hedef platformda temsil edilir;

  1. .Net İstemcisi: Microosft.AspNetCore.SignalR.Client.HubConnection
  2. JavaScript İstemcisi: @microsoft/signalr.HubConnection
  3. Java İstemcisi: com.microsoft.signalr.HubConnection

Hub bağlantısı başarılı olduğunda, iletiler çift yönde de serbestçe ilerler. Cilent hem server'a bildirim iletmekte hem server'dan bildirim almakta serbesttir.

Bu yazımızın sonuna geldik, şimdiye kadar SignalR için detaylıca bir teorik inceleme yaptık ve alt yapımızı hazırlamış olduk. Bir sonraki yazıda SignalR'ın nasıl çalıştığını pratik olarak ele alacağız ilgilenenlerin faydalanması ümidiyle.

Hiç yorum Yorum yapılmamış, İlk yorumu sen yap.

Yorum Yap


Bize Ulaşın

Merkez / Mardin

support@technoguide.com.tr

+90 551 859 8721

Haber Bültenİ

Haber Bültenİmİze Kaydolun

Yazılım, teknoloji ve daha fazlası için bizi takip edin.

© Techno Guide. Tüm Hakları Saklıdır.

HTML Codex Tasarımıdır.