Co to jest ASP.NET Core SignalR?

Ukończone

Wszystkie aplikacje połączone z Internetem składają się z serwerów i klientów. Klienci bazują na serwerach dla danych, a ich podstawowym mechanizmem odbierania danych jest wykonywanie żądań protokołu HTTP (Hypertext Transfer Protocol). Niektóre aplikacje klienckie wymagają danych, które często się zmieniają.

ASP.NET Core SignalR udostępnia interfejs API do tworzenia zdalnych wywołań procedur serwer-klient (RPCs). Wywołanie funkcji RPCs na klientach z poziomu kodu platformy .NET Core po stronie serwera. Istnieje kilka obsługiwanych platform, z których każdy ma własny zestaw SDK klienta. W związku z tym język programowania wywoływany przez wywołania RPC może się różnić.

Warto zapoznać się ze wspólną terminologią skojarzona z usługą SignalR. W tej lekcji dowiesz się, jakie składniki usługi SignalR są wymagane w aplikacji serwera, a nie w aplikacjach klienckich. Ponadto uzyskasz wiedzę na temat różnych mechanizmów komunikacji dwustronnej. Usługa SignalR hermetyzuje wiele protokołów czasu rzeczywistego i abstrahuje od złożoności każdej implementacji. Aby uzyskać więcej informacji, zobacz dokumentację ASP.NET Core SignalR .

Główne terminy używane w usłudze SignalR zostały omówione w poniższych sekcjach.

Transporty

Usługa SignalR obsługuje następujące techniki lub transporty do obsługi komunikacji w czasie rzeczywistym:

  1. Protokoły WebSocket
  2. Zdarzenia wysyłane przez serwer
  3. Długie sondowanie

Kolejność, w jakiej transporty są wymienione tutaj, oznacza ich łaskawą kolejność powrotu. Innymi słowy, obiekty WebSocket są preferowane w przypadku zdarzeń wysłanych przez serwer, a zdarzenia wysyłane przez serwer są preferowane w przypadku długiego sondowania, chociaż można użyć dowolnego z tych transportów. Usługa SignalR automatycznie wybiera najlepszą metodę transportu, która znajduje się w ramach możliwości serwera i klienta. Aby uzyskać więcej informacji, zobacz oficjalną specyfikację protokołów transportowych SignalR.

Serwer

Serwer jest odpowiedzialny za uwidacznianie punktu końcowego usługi SignalR. Punkt końcowy jest mapowy na podklasę Hub lub Hub<T> . Serwer może istnieć lokalnie w dostawcy chmury (na przykład na platformie Azure) lub w usłudze Azure SignalR Service. Serwer uwidacznia zarówno metody koncentratora, które mogą być wywoływane z klientów, jak i zdarzenia, do których klienci mogą subskrybować. Są to procedury zdalne.

Piasta

W usłudze SignalR koncentrator służy do komunikacji między klientami i serwerami. Koncentrator to potok wysokiego poziomu, który umożliwia klientowi i serwerowi wywoływanie metod nawzajem. W tym celu usługa SignalR automatycznie obsługuje wysyłanie przez granice maszyny. Koncentrator można traktować jako serwer proxy między wszystkimi połączonymi klientami i serwerem.

Protokoły

Protokół SignalR to protokół dwukierunkowego wywołania RPC za pośrednictwem dowolnego transportu opartego na komunikatach. Każda ze stron w połączeniu może wywołać procedury na drugiej stronie, a procedury mogą zwrócić zero lub więcej wyników lub błąd. Usługa SignalR udostępnia dwa wbudowane protokoły koncentratora:

  • Protokół tekstowy oparty na formacie JSON, który jest domyślny.
  • Protokół binarny oparty na usłudze MessagePack, który zazwyczaj tworzy mniejsze komunikaty niż JSON.

Aby korzystać z protokołu MessagePack , zarówno serwer, jak i klient muszą zdecydować się na jego skonfigurowanie, a zarówno serwer, jak i klient muszą go obsługiwać. Istnieje trzeci protokół koncentratora o nazwie BlazorPack, ale jest używany wyłącznie z aplikacjami Blazor-Server. Nie można go używać bez modelu hostingu serwera Blazor-Server. Aby uzyskać więcej informacji, zobacz oficjalną specyfikację protokołu SignalR Hub Protocol.

Użytkownicy

Użytkownik w systemie działa jako osoba, ale może być również częścią grupy. Wiadomości można wysyłać do grup, a wszyscy członkowie grupy są powiadamiani. Jeden użytkownik może łączyć się z wielu aplikacji klienckich. Na przykład ten sam użytkownik może używać urządzenia przenośnego i przeglądarki internetowej oraz pobierać aktualizacje w czasie rzeczywistym zarówno w tym samym czasie.

Grupy

Grupa składa się z co najmniej jednego połączenia. Serwer może tworzyć grupy, dodawać połączenia do grupy i usuwać połączenia z grupy. Grupa ma określoną nazwę, która działa jako unikatowy identyfikator. Grupy służą jako mechanizm określania zakresu, który ułatwia kierowanie komunikatów. Oznacza to, że funkcje w czasie rzeczywistym mogą być wysyłane tylko do użytkowników w ramach nazwanej grupy.

Połączenia

Połączenie z koncentratorem jest reprezentowane przez unikatowy identyfikator, który jest znany tylko serwerowi i klientowi. Jedno połączenie istnieje na typ koncentratora. Każdy klient ma unikatowe połączenie z serwerem. Oznacza to, że pojedynczy użytkownik może być reprezentowany na wielu klientach, ale każde połączenie klienta ma własny identyfikator.

Klienci

Klient jest odpowiedzialny za nawiązanie połączenia z punktem końcowym serwera za pośrednictwem HubConnection obiektu. Połączenie koncentratora jest reprezentowane w ramach każdej platformy docelowej:

Aby uzyskać więcej informacji, zobacz platformy obsługiwane przez ASP.NET Core SignalR.

Po pomyślnym uruchomieniu wystąpienia połączenia koncentratora komunikaty przepływają swobodnie w obu kierunkach. Użytkownicy mogą komunikować się zarówno z serwerem, jak i odbierać powiadomienia z serwera. Klient to dowolna połączona aplikacja, na przykład przeglądarka internetowa, aplikacja mobilna lub aplikacja klasyczna, między innymi.