Omówienie ASP.NET Core SignalR

ASP.NET Core SignalR to biblioteka typu open source, która upraszcza dodawanie funkcji internetowych w czasie rzeczywistym do aplikacji. Funkcjonalność w czasie rzeczywistym w aplikacjach webowych umożliwia, aby kod po stronie serwera natychmiast wypychał treści do klientów. Istnieje wiele scenariuszy, w których aplikacja ASP.NET Core może korzystać z SignalR:

Scenario Examples
Aplikacje wymagające aktualizacji o wysokiej częstotliwości z serwera Gry, sieci społecznościowe, witryny do głosowania, aukcje, mapy, GPS
Pulpity nawigacyjne i aplikacje do monitorowania Pulpity nawigacyjne firmy, natychmiastowe aktualizacje sprzedaży, alerty dotyczące podróży
Aplikacje obsługujące współpracę Aplikacje tablicy, oprogramowanie do spotkań zespołowych
Aplikacje wymagające powiadomień Sieci społecznościowe, Poczta e-mail, Czat, Gry, Alerty podróży

Ten artykuł zawiera wprowadzenie do pracy z SignalR w aplikacjach ASP.NET Core.

Funkcje i kod źródłowy

SignalRUdostępnia interfejs API do tworzenia zdalnych wywołań procedur serwer-klient (RPC). RPC wywołują funkcje na klientach za pomocą kodu .NET po stronie serwera. Istnieje kilka obsługiwanych platform, z których każdy ma odpowiedni zestaw SDK klienta. Język programowania wywoływany przez wywołanie RPC różni się w zależności od platformy.

SignalR dla ASP.NET Core udostępnia deweloperom wiele funkcji:

  • Automatycznie zarządzaj połączeniami
  • Wysyłanie wiadomości do wszystkich połączonych klientów jednocześnie (na przykład do pokoju rozmów)
  • Wysyłanie komunikatów do określonych klientów lub grup klientów
  • Skaluj, aby obsługiwać rosnący ruch za pomocą opcji takich jak Azure SignalR Service i Redis backplane
  • Obsługa przycinania i natywnej kompilacji przed czasem (AOT) dla obsługiwanych scenariuszy
  • Obsługa typów polimorficznych w metodach hubu
  • Obsługa śledzenia rozproszonego za pomocą ActivitySource dla serwera centrum SignalR i klienta .NET
  • Praca z SignalRprotokołem Hub

Źródło jest hostowane w repozytorium ASP.NET Core SignalR w witrynie GitHub.

Transports

SignalR obsługuje następujące techniki obsługi komunikacji w czasie rzeczywistym (w kolejności płynnego przejścia):

  • WebSockets
  • Zdarzenia wysyłane przez serwer
  • Długie sondowanie

SignalR automatycznie wybiera najlepszą metodę transportu w ramach możliwości serwera i klienta. Protokoły WebSocket są preferowanym transportem, ponieważ ogólnie zapewnia najlepszą wydajność.

Hubs

SignalR używa koncentratorów do komunikowania się między klientami i serwerami.

Koncentrator to wysokopoziomowy potok danych, który klient i serwer wykorzystują do wzajemnego wywoływania metod. SignalR automatycznie obsługuje dystrybucję przez granice systemów, dzięki czemu klienci mogą wywoływać metody na serwerze i odwrotnie. Możesz przekazać silnie typizowane parametry do metod i włączyć powiązanie modelu.

SignalR obsługuje dwa wbudowane protokoły koncentratora:

  • Protokół tekstowy oparty na formacie JSON (wartość domyślna)
  • Protokół binarny oparty na usłudze MessagePack. Pakiet MessagePack zazwyczaj tworzy mniejsze komunikaty w porównaniu z formatem JSON. Aby uzyskać więcej informacji, zobacz Użyj protokołu MessagePack Hub w SignalR dla ASP.NET Core.

Centra wywołają kod po stronie klienta, wysyłając komunikaty zawierające nazwę i parametry metody po stronie klienta. Skonfigurowany protokół deserializuje obiekty wysyłane jako parametry metody. Klient próbuje dopasować nazwę do metody w kodzie po stronie klienta. Gdy klient znajdzie dopasowanie, wywołuje metodę i przekazuje deserializowane dane parametrów.

Co to jest SignalR?

ASP.NET Core SignalR to biblioteka typu open source, która upraszcza dodawanie funkcji internetowych w czasie rzeczywistym do aplikacji. Funkcjonalność w czasie rzeczywistym w aplikacjach webowych umożliwia, aby kod po stronie serwera natychmiast wypychał treści do klientów.

Dobrzy kandydaci do :SignalR

  • Aplikacje, które wymagają częstych aktualizacji z serwera. Są to na przykład gry i aplikacje do obsługi sieci społecznościowych, głosowania, aukcji, map i nawigacji GPS.
  • Pulpity nawigacyjne i aplikacje do monitorowania. Przykładami mogą być firmowe pulpity nawigacyjne, błyskawiczne powiadomienia o sprzedaży lub alerty dotyczące podróży.
  • Aplikacje do współpracy. Przykładami aplikacji do współpracy są aplikacje tablicy i oprogramowanie do spotkań zespołowych.
  • Aplikacje, które wymagają powiadomień. Wiele aplikacji korzysta z powiadomień, w tym gry i aplikacje do obsługi sieci społecznościowych, poczty e-mail, czatów i alertów dotyczących podróży.

SignalRUdostępnia interfejs API do tworzenia zdalnych wywołań procedur serwer-klient (RPC). RPC wywołują funkcje na klientach za pomocą kodu .NET po stronie serwera. Istnieje kilka obsługiwanych platform, z których każdy ma odpowiedni zestaw SDK klienta. W związku z tym język programowania wywoływany przez wywołanie RPC różni się.

Poniżej przedstawiono niektóre funkcje SignalR dla ASP.NET Core:

  • Automatycznie obsługuje zarządzanie połączeniami.
  • Wysyła komunikaty do wszystkich połączonych klientów jednocześnie. Na przykład pokój rozmów.
  • Wysyła komunikaty do określonych klientów lub grup klientów.
  • Możliwość skalowania w celu obsługi rosnącego ruchu przy użyciu takich opcji, jak Azure SignalR Service oraz Redis backplane.
  • Obsługuje przycinanie i natywną kompilację przed czasem (AOT) dla obsługiwanych scenariuszy.
  • Obsługuje obsługę typów polimorficznych w metodach centrów komunikacyjnych.
  • Obsługuje śledzenie rozproszone za pomocą ActivitySource dla serwera hub SignalR i klienta .NET.
  • SignalR Protokół koncentratora

Źródło jest hostowane w repozytorium SignalR w GitHub.

Transports

SignalR obsługuje następujące techniki obsługi komunikacji w czasie rzeczywistym (w kolejności płynnego przejścia):

  • WebSockets
  • Zdarzenia wysyłane przez serwer
  • Długie sondowanie

SignalR automatycznie wybiera najlepszą metodę transportu, która znajduje się w ramach możliwości serwera i klienta. Protokoły WebSocket są preferowanym transportem, ponieważ ogólnie zapewnia najlepszą wydajność.

Hubs

SignalR używa koncentratorów do komunikowania się między klientami i serwerami.

Koncentrator to wysokopoziomowa rura procesowa, która umożliwia klientowi i serwerowi wzajemne wywoływanie metod. SignalR automatycznie obsługuje wysyłanie przez granice maszyny, umożliwiając klientom wywoływanie metod na serwerze i na odwrót. Możesz przekazać silnie typizowane parametry do metod, co umożliwia powiązanie modelu. SignalR obsługuje dwa wbudowane protokoły koncentratora: protokół tekstowy oparty na formacie JSON (wartość domyślna) i protokół binarny oparty na formacie MessagePack. Pakiet MessagePack zazwyczaj tworzy mniejsze komunikaty w porównaniu z formatem JSON. Aby uzyskać więcej informacji, zobacz Użyj protokołu MessagePack Hub w SignalR dla ASP.NET Core.

Centra wywołają kod po stronie klienta, wysyłając komunikaty zawierające nazwę i parametry metody po stronie klienta. Obiekty wysyłane jako parametry metody są deserializowane przy użyciu skonfigurowanego protokołu. Klient próbuje dopasować nazwę do metody w kodzie po stronie klienta. Gdy klient znajdzie dopasowanie, wywołuje metodę i przekazuje do niej zdeserializowane dane parametrów.

Co to jest SignalR?

ASP.NET Core SignalR to biblioteka typu open source, która upraszcza dodawanie funkcji internetowych w czasie rzeczywistym do aplikacji. Funkcjonalność w czasie rzeczywistym w aplikacjach webowych umożliwia, aby kod po stronie serwera natychmiast wypychał treści do klientów.

Dobrzy kandydaci do :SignalR

  • Aplikacje, które wymagają częstych aktualizacji z serwera. Są to na przykład gry i aplikacje do obsługi sieci społecznościowych, głosowania, aukcji, map i nawigacji GPS.
  • Pulpity nawigacyjne i aplikacje do monitorowania. Przykładami mogą być firmowe pulpity nawigacyjne, błyskawiczne powiadomienia o sprzedaży lub alerty dotyczące podróży.
  • Aplikacje do współpracy. Przykładami aplikacji do współpracy są aplikacje tablicy i oprogramowanie do spotkań zespołowych.
  • Aplikacje, które wymagają powiadomień. Wiele aplikacji korzysta z powiadomień, w tym gry i aplikacje do obsługi sieci społecznościowych, poczty e-mail, czatów i alertów dotyczących podróży.

SignalRUdostępnia interfejs API do tworzenia zdalnych wywołań procedur serwer-klient (RPC). RPC wywołują funkcje na klientach za pomocą kodu .NET po stronie serwera. Istnieje kilka obsługiwanych platform, z których każdy ma odpowiedni zestaw SDK klienta. W związku z tym język programowania wywoływany przez wywołanie RPC różni się.

Poniżej przedstawiono niektóre funkcje SignalR dla ASP.NET Core:

  • Automatycznie obsługuje zarządzanie połączeniami.
  • Wysyła komunikaty do wszystkich połączonych klientów jednocześnie. Na przykład pokój rozmów.
  • Wysyła komunikaty do określonych klientów lub grup klientów.
  • Skalowanie do obsługi coraz większego ruchu.
  • SignalR Protokół koncentratora

Źródło jest hostowane w repozytorium SignalR w GitHub.

Transports

SignalR obsługuje następujące techniki obsługi komunikacji w czasie rzeczywistym (w kolejności płynnego przejścia):

  • WebSockets
  • Zdarzenia wysyłane przez serwer
  • Długie sondowanie

SignalR automatycznie wybiera najlepszą metodę transportu, która znajduje się w ramach możliwości serwera i klienta.

Hubs

SignalR używa koncentratorów do komunikowania się między klientami i serwerami.

Koncentrator to wysokopoziomowa rura procesowa, która umożliwia klientowi i serwerowi wzajemne wywoływanie metod. SignalR automatycznie obsługuje wysyłanie przez granice maszyny, umożliwiając klientom wywoływanie metod na serwerze i na odwrót. Możesz przekazać silnie typizowane parametry do metod, co umożliwia powiązanie modelu. SignalR Udostępnia dwa wbudowane protokoły koncentratora: protokół tekstowy oparty na formacie JSON i protokół binarny oparty na elemecie MessagePack. Pakiet MessagePack zazwyczaj tworzy mniejsze komunikaty w porównaniu z formatem JSON. Starsze przeglądarki muszą obsługiwać poziom XHR 2 , aby zapewnić obsługę protokołu MessagePack.

Centra wywołają kod po stronie klienta, wysyłając komunikaty zawierające nazwę i parametry metody po stronie klienta. Obiekty wysyłane jako parametry metody są deserializowane przy użyciu skonfigurowanego protokołu. Klient próbuje dopasować nazwę do metody w kodzie po stronie klienta. Gdy klient znajdzie dopasowanie, wywołuje metodę i przekazuje do niej zdeserializowane dane parametrów.

Przeglądarki, które nie obsługują kodu ECMAScript 6 (ES6)

SignalR celuje w ES6. W przypadku przeglądarek, które nie obsługują wersji ES6, należy transpilować bibliotekę do wersji ES5. Aby uzyskać więcej informacji, zobacz Getting Started with ES6 – Transpiling ES6 to ES5 with Traceur and Babel (Wprowadzenie do wersji ES6 — transpilowanie ES6 do ES5 za pomocą platformy Traceur i Babel).