ASP.NET Core SignalR nedir?

Tamamlandı

İnternet'e bağlı tüm uygulamalar sunuculardan ve istemcilerden oluşur. İstemciler veri için sunuculara güvenir ve veri almak için birincil mekanizmaları Köprü Metni Aktarım Protokolü (HTTP) istekleri oluşturmaktır. Bazı istemci uygulamaları, sık değişen veriler gerektirir.

ASP.NET Core SignalR, sunucudan istemciye uzak yordam çağrıları (RPC) oluşturmaya yönelik bir API sağlar. RPC'ler sunucu tarafı .NET Core kodundan istemcilerde işlevleri çağırır. Her biri kendi istemci SDK'sına sahip çeşitli desteklenen platformlar vardır. Bu nedenle, RPC çağrıları tarafından çağrılan programlama dili farklılık gösterebilir.

SignalR ile ilişkili ortak terminolojiyi öğrenmeniz yararlı olur. Bu ünitede bir sunucu uygulamasında hangi SignalR bileşenlerinin gerekli olduğunu ve istemci uygulamalarındaki bileşenleri öğreneceksiniz. Ayrıca, çeşitli çift yönlü iletişim mekanizmaları hakkında bilgi edineceksiniz. SignalR birden çok gerçek zamanlı protokolü kapsüller ve her uygulamanın karmaşıklıklarını soyutlar. Daha fazla bilgi için ASP.NET Core SignalR belgelerine bakın.

SignalR'de kullanılan temel terimler aşağıdaki bölümlerde açıklanmıştır.

Taşımalar

SignalR, gerçek zamanlı iletişimi işlemek için aşağıdaki teknikleri veya aktarımları destekler:

  1. WebSockets
  2. Sunucu Tarafından Gönderilen Olaylar
  3. Uzun Yoklama

Taşımaların burada listelenme sırası, düzgün geri dönüş sırasını gösterir. Başka bir deyişle, WebSockets Sunucu Tarafından Gönderilen Olaylar yerine tercih edilir ve Sunucu Tarafından Gönderilen Olaylar Uzun Yoklama yerine tercih edilir, ancak bu aktarımlardan herhangi biri kullanılabilir. SignalR, sunucunun ve istemcinin özellikleri içinde en iyi aktarım yöntemini otomatik olarak seçer. Daha fazla bilgi için SignalR Aktarım Protokolleri için resmi belirtimlere bakın.

Sunucu

Sunucu bir SignalR uç noktasını kullanıma çıkarmakla sorumludur. Uç nokta bir Hub veya Hub<T> alt sınıfına eşler. Sunucu şirket içinde, bir bulut sağlayıcısında (Azure gibi) veya Azure SignalR Hizmeti bulunabilir. Sunucu hem istemcilerden çağrılabilen hub yöntemlerini hem de istemcilerin abone olabileceği olayları kullanıma sunar. Bunlar uzak yordamlar olarak kabul edilir.

Hub

SignalR'de, istemciler ve sunucular arasında iletişim kurmak için bir hub kullanılır. Hub, bir istemci ile sunucunun birbirleri üzerinde yöntemler çağırmasına olanak tanıyan üst düzey bir işlem hattıdır. Bu amaçla SignalR, gönderimi makine sınırları arasında otomatik olarak işler. Hub'ı tüm bağlı istemciler ile sunucu arasında ara sunucu olarak düşünebilirsiniz.

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. Daha fazla bilgi için SignalR Hub Protokolü'ne ilişkin resmi belirtimlere bakın.

Kullanıcılar

Sistemdeki bir kullanıcı bireysel olarak hareket eder, ancak bir grubun parçası da olabilir. İletiler gruplara gönderilebilir ve tüm grup üyelerine bildirilir. Tek bir kullanıcı birden çok istemci uygulamasından bağlanabilir. Örneğin, aynı kullanıcı mobil cihaz ve web tarayıcısı kullanabilir ve her ikisinde de aynı anda gerçek zamanlı güncelleştirmeler alabilir.

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.

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.

Müşteriler

İstemci, bir nesne aracılığıyla HubConnection sunucunun uç noktasına bağlantı kurmakla sorumludur. Merkez bağlantısı her hedef platformda temsil edilir:

Daha fazla bilgi için bkz . ASP.NET Core SignalR desteklenen platformlar.

Hub bağlantı örneği başarıyla başlatıldığında, iletiler her iki yönde de serbestçe akar. Kullanıcılar hem sunucuya bildirim iletmekte hem de sunucudan bildirim almakta serbesttir. İstemci, web tarayıcısı, mobil uygulama veya masaüstü uygulaması gibi herhangi bir bağlı uygulamadır.