Co je ASP.NET Core SignalR?
Všechny aplikace připojené k internetu se skládají ze serverů a klientů. Klienti spoléhají na servery pro data a jejich primární mechanismus pro příjem dat je prostřednictvím požadavků HTTP (Hypertext Transfer Protocol). Některé klientské aplikace vyžadují data, která se často mění.
ASP.NET Core SignalR poskytuje rozhraní API pro vytváření vzdálených volání procedur mezi servery (RPCS). Rpcs volají funkce na klientech z kódu .NET Core na straně serveru. Existuje několik podporovaných platforem, z nichž každá má vlastní klientskou sadu SDK. Programovací jazyk vyvolaný voláním RPC se proto může lišit.
Je užitečné se seznámit s běžnou terminologií spojenou se službou SignalR. V této lekci se dozvíte, jaké komponenty SignalR jsou vyžadovány v serverové aplikaci a které jsou v klientských aplikacích. Kromě toho získáte přehled o různých duplexních komunikačních mechanismech. SignalR zapouzdřuje několik protokolů v reálném čase a abstrahuje složitost každé implementace. Další informace najdete v dokumentaci ASP.NET Core SignalR .
Hlavní termíny, které se používají v SignalR, jsou popsány v následujících částech.
Přenosy
SignalR podporuje následující techniky nebo přenosy pro zpracování komunikace v reálném čase:
- WebSockets
- Události odesílané serverem
- Dlouhé dotazování
Pořadí, ve kterém jsou zde uvedeny přepravy, značí jejich řádné náhradní pořadí. Jinými slovy, WebSockets se upřednostňuje před událostmi odesílaným serverem a události odesílané serverem se preferují před dlouhým dotazováním, i když je možné použít některý z těchto přenosů. SignalR automaticky zvolí nejlepší způsob přenosu, který je v rámci možností serveru a klienta. Další informace najdete v oficiální specifikaci přenosových protokolů SignalR.
Server
Server zodpovídá za zveřejnění koncového bodu SignalR. Koncový bod se mapuje na podtříduHub.Hub<T> Server může existovat místně, v poskytovateli cloudu (například Azure) nebo ve službě Azure SignalR. Server zveřejňuje obě metody centra, které je možné volat z klientů, a události, ke kterým se klienti mohou přihlásit. Tyto postupy jsou považovány za vzdálené.
Centrum
V SignalR se centrum používá ke komunikaci mezi klienty a servery. Centrum je kanál vysoké úrovně, který klientovi a serveru umožňuje navzájem volat metody. K tomuto účelu signalR zpracovává odesílání přes hranice počítače automaticky. Centrum si můžete představit jako proxy mezi všemi připojenými klienty a serverem.
Protokoly
Protokol SignalR je protokol pro obousměrný rpc přes jakýkoli přenos založený na zprávách. Obě strany v připojení mohou vyvolat procedury na druhé straně a postupy můžou vrátit nulové nebo více výsledků nebo chybu. SignalR poskytuje dva integrované protokoly rozbočovače:
- Textový protokol založený na formátu JSON, což je výchozí hodnota.
- Binární protokol založený na MessagePacku, který obvykle vytváří menší zprávy než JSON.
Pokud chcete použít protokol MessagePack , musí se server i klient přihlásit ke konfiguraci a server i klient ho musí podporovat. Existuje třetí protokol centra s názvem BlazorPack, ale používá se výhradně s aplikacemi Blazor-Server. Nedá se použít bez modelu hostování Blazor-Server. Další informace najdete v oficiální specifikaci protokolu SignalR Hub Protocol.
Uživatelé
Uživatel v systému funguje jako jednotlivec, ale může být také součástí skupiny. Zprávy lze odesílat do skupin a všichni členové skupiny jsou upozorněni. Jeden uživatel se může připojit z více klientských aplikací. Stejný uživatel může například používat mobilní zařízení a webový prohlížeč a současně získávat aktualizace v reálném čase.
Skupiny
Skupina se skládá z jednoho nebo více připojení. Server může vytvářet skupiny, přidávat připojení ke skupině a odebírat připojení ze skupiny. Skupina má zadaný název, který funguje jako jedinečný identifikátor. Skupiny slouží jako mechanismus oborů, který pomáhá cílit na zprávy. To znamená, že funkce v reálném čase se dají posílat jenom uživatelům v pojmenované skupině.
Připojení
Připojení k centru je reprezentováno jedinečným identifikátorem, který je znám pouze serveru a klientovi. Jedno připojení existuje pro každý typ rozbočovače. Každý klient má jedinečné připojení k serveru. To znamená, že jeden uživatel může být reprezentován na více klientech, ale každé připojení klienta má svůj vlastní identifikátor.
Klienti
Klient zodpovídá za navázání připojení ke koncovému bodu serveru prostřednictvím objektu HubConnection
. Připojení centra je reprezentováno v rámci každé cílové platformy:
- Klient .NET:
Microsoft.AspNetCore.SignalR.Client.HubConnection
- JavaScriptový klient:
@microsoft/signalr.HubConnection
- Klient Java:
com.microsoft.signalr.HubConnection
Další informace najdete v tématu ASP.NET podporovaných platforem Core SignalR.
Když se instance připojení centra úspěšně spustí, zprávy volně proudí v obou směrech. Uživatelé mají možnost komunikovat oznámení na server i přijímat oznámení ze serveru. Klient je libovolná propojená aplikace, například webový prohlížeč, mobilní aplikace nebo desktopová aplikace.