Azure SignalR Hizmeti iç işlevleri

Azure SignalR Hizmeti, ASP.NET Core SignalR çerçevesinin üzerine kurulmuştur. Ayrıca ASP.NET Core çerçevesinin üzerine ASP.NET SignalR'nin veri protokolünün yeniden ASP.NET SignalR'yi de destekler.

Yerel ASP.NET Core SignalR veya ASP.NET SignalR uygulamasını birkaç kod satırı değiştirerek SignalR Hizmeti ile çalışmak üzere kolayca geçirebilirsiniz.

Diyagram, uygulama sunucunuzla SignalR Hizmeti kullandığınızda tipik mimariyi açıklar.

Şirket içinde barındırılan ASP.NET Core SignalR uygulaması arasındaki farklar da ele alınıyor.

Architecture

Uygulama sunucusu bağlantıları

Şirket içinde barındırılan ASP.NET Core SignalR uygulama sunucusu istemcileri doğrudan dinler ve bağlar.

SignalR Hizmeti ile uygulama sunucusu artık kalıcı istemci bağlantılarını kabul etmemektedir:

  1. negotiate nokta, her hub için Azure SignalR Hizmeti SDK tarafından kullanıma sunulur.
  2. Uç nokta, istemci anlaşması isteklerine yanıt verir ve istemcileri SignalR Hizmeti'e yönlendirir.
  3. İstemciler SignalR Hizmeti bağlanır.

Daha fazla bilgi için bkz . İstemci bağlantıları.

Uygulama sunucusu başlatıldıktan sonra:

  • ASP.NET Core SignalR için: Azure SignalR Hizmeti SDK, SignalR Hizmeti için hub başına beş WebSocket bağlantısı açar.
  • ASP.NET SignalR için: Azure SignalR Hizmeti SDK, SignalR Hizmeti için hub başına beş WebSocket bağlantısı ve uygulama başına WebSocket bağlantısı açar.

İlk bağlantı sayısı varsayılan olarak 5'tir ve SignalR Hizmeti SDK'sı seçeneği kullanılarak InitialHubServerConnectionCount yapılandırılabilir. Daha fazla bilgi için bkz . yapılandırma.

Uygulama sunucusu SignalR hizmetine bağlı olsa da Azure SignalR hizmeti sunucuya yük dengeleme iletileri gönderebilir. Ardından SDK, daha iyi performans için hizmete yeni sunucu bağlantıları başlatır. İstemcilere gelen ve istemcilerden gelen iletiler bu bağlantılara katlanır.

Sunucu bağlantıları kalıcı olarak SignalR Hizmeti bağlanır. Bir ağ sorunu nedeniyle sunucu bağlantısının kesilmesi durumunda:

  • Bu sunucu bağlantısı tarafından sunulan tüm istemcilerin bağlantısı kesilir. Daha fazla bilgi için bkz . İstemci ve sunucu arasında veri iletimi.
  • Sunucu, istemcileri otomatik olarak yeniden bağlanır.

İstemci bağlantıları

SignalR Hizmeti kullandığınızda, istemciler uygulama sunucusu yerine hizmete bağlanır. İstemci ile SignalR Hizmeti arasında kalıcı bağlantılar kurmanın üç adımı vardır.

  1. İstemci uygulama sunucusuna bir anlaşma isteği gönderir.

  2. Uygulama sunucusu, SignalR Hizmeti URL'sini ve erişim belirtecini içeren bir yeniden yönlendirme yanıtı döndürmek için Azure SignalR Hizmeti SDK'sını kullanır.

    • ASP.NET Core SignalR için tipik bir yeniden yönlendirme yanıtı şöyle görünür:
      {
          "url":"https://test.service.signalr.net/client/?hub=chat&...",
          "accessToken":"<a typical JWT token>"
      }
      
    • ASP.NET SignalR için tipik bir yeniden yönlendirme yanıtı şöyle görünür:
      {
          "ProtocolVersion":"2.0",
          "RedirectUrl":"https://test.service.signalr.net/aspnetclient",
          "AccessToken":"<a typical JWT token>"
      }
      
  3. İstemci yeniden yönlendirme yanıtını aldıktan sonra, SignalR Hizmeti bağlanmak için URL ve erişim belirtecini kullanır.

ASP.NET Core SignalR'ler hakkında daha fazla bilgi edinmek için bkz . Aktarım Protokolleri.

İstemci ve sunucu arasında veri iletimi

bir istemci SignalR Hizmeti bağlandığında, hizmet çalışma zamanı bu istemciye hizmet vermek için bir sunucu bağlantısı bulur.

  • Bu adım yalnızca bir kez gerçekleşir ve istemci ile sunucu bağlantısı arasında bire bir eşlemedir.
  • eşleme, istemci veya sunucu bağlantısı kesilene kadar SignalR Hizmeti korunur.

Bu noktada, uygulama sunucusu yeni istemciden bilgi içeren bir olay alır. Uygulama sunucusunda istemciye mantıksal bir bağlantı oluşturulur. Veri kanalı, SignalR Hizmeti aracılığıyla istemciden uygulama sunucusuna kurulur.

SignalR Hizmeti verileri istemciden eşleştirme uygulama sunucusuna iletir. Uygulama sunucusundan alınan veriler eşlenen istemcilere gönderilir.

SignalR Hizmeti müşteri verilerini kaydetmez veya depolamaz, alınan tüm müşteri verileri gerçek zamanlı olarak hedef sunucuya veya istemcilere iletilir.

Azure SignalR Hizmeti, uygulama sunucusu ile istemciler arasında mantıksal bir aktarım katmanı işlevi görür. Tüm kalıcı bağlantılar SignalR Hizmeti'a yüklenir. Sonuç olarak, uygulama sunucusunun istemci bağlantıları konusunda endişelenmeden yalnızca hub sınıfında iş mantığını işlemesi gerekir.

Sonraki adımlar

Azure SignalR SDK'ları hakkında daha fazla bilgi edinmek için bkz: