Skalowanie aplikacji ASP.NET Core SignalR za pomocą usługi Azure SignalR Service
Tworzenie aplikacji SignalR
Usługa SignalR jest obecnie dostępna w dwóch wersjach do użycia z aplikacjami internetowymi:
- ASP.NET SignalR
- nowy ASP.NET Core SignalR
ASP.NET Core SignalR to ponownie napisana poprzednia wersja tej biblioteki. W związku z tym usługa ASP.NET Core SignalR nie jest zgodna z poprzednimi wersjami usługi SignalR. Interfejsy API i działanie różnią się. Usługa Azure SignalR Service obsługuje obie wersje.
Usługa Azure SignalR Service umożliwia hostowanie rzeczywistej aplikacji internetowej na wielu platformach (Windows, Linux i macOS) aplikacja systemu Azure Service, IIS, Nginx, Apache, Docker. Możesz też użyć własnego hostingu w ramach swojego procesu.
Usługa Azure SignalR Service jest najlepszym wyborem, jeśli cele aplikacji obejmują:
- obsługa najnowszych funkcji aktualizowania klientów internetowych za pomocą aktualizacji zawartości w czasie rzeczywistym,
- uruchamianie na wielu platformach (Azure, Windows, Linux i macOS)
- hosting w różnych środowiskach
Dlaczego samodzielnie nie wdrażać biblioteki SignalR?
Nadal jest to prawidłowe podejście do wdrażania własnej aplikacji internetowej platformy Azure obsługującej usługę SignalR jako składnik zaplecza w ogólnej aplikacji internetowej.
Jednym z najważniejszych argumentów za korzystaniem z usługi Azure SignalR Service jest prostota. W przypadku usługi Azure SignalR Service nie trzeba martwić się o takie rzeczy jak wydajność, skalowalność i dostępność. Tymi kwestiami zajmujemy się my, dając umowę SLA gwarantującą czas dostępności na poziomie 99,9%.
Ponadto preferowaną techniką aktualizacji zawartości w czasie rzeczywistym jest protokół WebSocket. Jednak równoważenie obciążenia dużą liczbą trwałych połączeń protokołu WebSocket staje się problemem niełatwym do rozwiązania podczas skalowania. Typowe rozwiązania: równoważenie obciążenia DNS, sprzętowe moduły równoważenia obciążenia i programowe równoważenie obciążenia. Usługa Azure SignalR Service rozwiązuje ten problem za Ciebie.
W przypadku ASP.NET Core SignalR innym powodem może być brak wymagań dotyczących faktycznego hostowania aplikacji internetowej. Logika aplikacji internetowej może używać przetwarzania bezserwerowego. Na przykład Twój kod może być hostowany i wykonywany jedynie na żądanie przy użyciu wyzwalaczy usługi Azure Functions. Ten scenariusz może być trudny, ponieważ kod działa tylko na żądanie i nie utrzymuje długich połączeń z klientami. Usługa Azure SignalR Service może obsłużyć taką sytuację, ponieważ już zarządza połączeniami za Ciebie. Aby uzyskać więcej informacji, zobacz omówienie korzystania z usługi SignalR Service z usługą Azure Functions. Ponieważ ASP.NET SignalR używa innego protokołu, taki tryb bezserwerowy nie jest obsługiwany w przypadku ASP.NET SignalR.
Jak wykonywane jest skalowanie?
Usługa SignalR jest często skalowana za pomocą programu SQL Server, usługi Azure Service Bus lub usługi Azure Cache for Redis. Usługa Azure SignalR Service obsługuje podejście ze skalowaniem za Ciebie. Wydajność i koszty są porównywalne jak w powyższym podejściu, ale bez złożoności związanej z obsługą tych innych usług. Wszystko, co trzeba zrobić, to zaktualizować liczbę jednostek dla swojej usługi. Każda jednostka obsługuje do 1000 połączeń z klientami.