Overzicht van ASP.NET Core SignalR

ASP.NET Core SignalR is een opensource-bibliotheek die het toevoegen van realtime webfunctionaliteit aan apps vereenvoudigt. Met realtime webfunctionaliteit kan code aan de serverzijde direct inhoud naar clients pushen. Er zijn veel scenario's waarin een ASP.NET Core toepassing kan profiteren van SignalR:

Scenario Voorbeelden
Toepassingen waarvoor updates met een hoge frequentie van de server zijn vereist Gaming, Sociale netwerken, Stemsites, Veilingen, Kaarten, GPS
Dashboards en apps voor bewaking Bedrijfsdashboards, directe verkoopupdates, reiswaarschuwingen
Apps die ondersteuning bieden voor samenwerking Whiteboard-apps, software voor teamvergaderingen
Apps waarvoor meldingen zijn vereist Sociale netwerken, e-mail, chat, games, reiswaarschuwingen

Dit artikel bevat een inleiding tot het werken met SignalR in uw ASP.NET Core-apps.

Mogelijkheden en broncode

SignalRbiedt een API voor het maken van externe procedureaanroepen van de server naar client (RPC). De RPCs roepen functies aan op clients vanuit .NET-code aan de serverkant. Er zijn verschillende ondersteunde platforms, elk met hun respectieve client-SDK. De programmeertaal die wordt aangeroepen door de RPC-aanroep, varieert op basis van het platform.

SignalR voor ASP.NET Core biedt ontwikkelaars veel functies:

  • Verbindingsbeheer automatisch afhandelen
  • Berichten tegelijk verzenden naar alle verbonden clients (bijvoorbeeld een chatruimte)
  • Berichten verzenden naar specifieke cliënten of groepen cliënten
  • Schaal om het toenemende verkeer te verwerken met opties zoals de Azure SignalR Service en Redis backplane
  • Ondersteunt trimming en native ahead-of-time-compilatie (AOT) voor ondersteunde scenario's
  • Ondersteuning voor polymorfe typeafhandeling in hubmethoden
  • Ondersteuning voor gedistribueerde tracering met ActivitySource voor SignalR hubserver en .NET-client
  • Werken met het SignalR Hub-protocol

De bron wordt gehost in de opslagplaats ASP.NET Core SignalR op GitHub.

Transports

SignalR ondersteunt de volgende technieken voor het verwerken van realtime communicatie (in volgorde van geleidelijke terugval):

  • WebSockets
  • Door de server verzonden gebeurtenissen
  • Long polling

SignalR kiest automatisch de beste transportmethode binnen de mogelijkheden van de server en client. WebSockets is het voorkeurstransport omdat het over het algemeen de beste prestaties biedt.

Hubs

SignalR maakt gebruik van hubs om te communiceren tussen clients en servers.

Een hub is een pijplijn op hoog niveau die een client en server gebruiken om methoden op elkaar aan te roepen. SignalR verwerkt de verzending automatisch over de grenzen van computers, zodat clients methoden op de server kunnen aanroepen en omgekeerd. U kunt sterk getypte parameters doorgeven aan methoden en modelbinding inschakelen.

SignalR ondersteunt twee ingebouwde hubprotocollen:

Hubs roepen code aan clientzijde aan door berichten te verzenden die de naam en parameters van de methode aan de clientzijde bevatten. Het geconfigureerde protocol ontserialiseerde objecten die als methodeparameters worden verzonden. De client probeert de naam te koppelen aan een methode in de code aan de clientzijde. Wanneer de client een overeenkomst vindt, wordt de methode aangeroepen en worden de gedeserialiseerde parametergegevens doorgegeven.

Wat is SignalR?

ASP.NET Core SignalR is een opensource-bibliotheek die het toevoegen van realtime webfunctionaliteit aan apps vereenvoudigt. Met realtime webfunctionaliteit kan code aan de serverzijde direct inhoud naar clients pushen.

Goede kandidaten voor SignalR:

  • Apps waarvoor updates met een hoge frequentie van de server zijn vereist. Voorbeelden zijn gaming, sociale netwerken, stemmen, veilingen, kaarten en GPS-apps.
  • Dashboards en bewakingsapps. Voorbeelden hiervan zijn bedrijfsdashboards, directe verkoopupdates of reiswaarschuwingen.
  • Samenwerkings-apps. Whiteboard-apps en software voor teamvergaderingen zijn voorbeelden van samenwerkings-apps.
  • Apps waarvoor meldingen zijn vereist. Sociale netwerken, e-mail, chat, games, reiswaarschuwingen en vele andere apps gebruiken meldingen.

SignalRbiedt een API voor het maken van externe procedureaanroepen van de server naar client (RPC). De RPCs roepen functies aan op clients vanuit .NET-code aan de serverkant. Er zijn verschillende ondersteunde platforms, elk met hun respectieve client-SDK. Hierdoor varieert de programmeertaal die wordt aangeroepen door de RPC-aanroep.

Hier volgen enkele functies van SignalR voor ASP.NET Core:

  • Verwerkt verbindingsbeheer automatisch.
  • Hiermee worden berichten tegelijk verzonden naar alle verbonden clients. Bijvoorbeeld een chatruimte.
  • Hiermee worden berichten verzonden naar specifieke clients of groepen clients.
  • Hiermee kunt u het toenemende verkeer verwerken met opties zoals de Azure SignalR Service en Redis backplane.
  • Biedt ondersteuning voor trimming en systeemeigen AOT-compilatie voor ondersteunde scenario's.
  • Ondersteunt het verwerken van polymorfe typen in hubmethoden.
  • Ondersteunt gedistribueerde tracering met ActivitySource voor SignalR hubserver en .NET-client.
  • SignalR HubProtocol

De bron wordt gehost in een SignalR opslagplaats op GitHub.

Transports

SignalR ondersteunt de volgende technieken voor het verwerken van realtime communicatie (in volgorde van geleidelijke terugval):

  • WebSockets
  • Server-verzonden gebeurtenissen
  • "Lange polling"

SignalR kiest automatisch de beste transportmethode die zich binnen de mogelijkheden van de server en client bevindt. WebSockets is het voorkeurstransport omdat het over het algemeen de beste prestaties biedt.

Hubs

SignalR maakt gebruik van hubs om te communiceren tussen clients en servers.

Een hub is een pijplijn op hoog niveau waarmee een client en server methoden op elkaar kunnen aanroepen. SignalR verwerkt de verzending automatisch over de grenzen van computers, zodat clients methoden op de server kunnen aanroepen en omgekeerd. U kunt sterk getypte parameters doorgeven aan methoden, waardoor modelbinding mogelijk is. SignalR ondersteunt twee ingebouwde hubprotocollen: een tekstprotocol op basis van JSON (standaard) en een binair protocol op basis van MessagePack. MessagePack maakt doorgaans kleinere berichten in vergelijking met JSON. Zie Use MessagePack Hub Protocol in SignalR voor ASP.NET Core voor meer informatie.

Hubs roepen code aan clientzijde aan door berichten te verzenden die de naam en parameters van de methode aan de clientzijde bevatten. Objecten die als methodeparameters worden verzonden, worden gedeserialiseerd met behulp van het geconfigureerde protocol. De client probeert de naam te koppelen aan een methode in de code aan de clientzijde. Wanneer de klant een overeenkomst vindt, roept deze de methode aan en geeft daarbij de gedeserialiseerde parametergegevens door.

Aanvullende bronnen

Wat is SignalR?

ASP.NET Core SignalR is een opensource-bibliotheek die het toevoegen van realtime webfunctionaliteit aan apps vereenvoudigt. Met realtime webfunctionaliteit kan code aan de serverzijde direct inhoud naar clients pushen.

Goede kandidaten voor SignalR:

  • Apps waarvoor updates met een hoge frequentie van de server zijn vereist. Voorbeelden zijn gaming, sociale netwerken, stemmen, veilingen, kaarten en GPS-apps.
  • Dashboards en bewakingsapps. Voorbeelden hiervan zijn bedrijfsdashboards, directe verkoopupdates of reiswaarschuwingen.
  • Samenwerkings-apps. Whiteboard-apps en software voor teamvergaderingen zijn voorbeelden van samenwerkings-apps.
  • Apps waarvoor meldingen zijn vereist. Sociale netwerken, e-mail, chat, games, reiswaarschuwingen en vele andere apps gebruiken meldingen.

SignalRbiedt een API voor het maken van externe procedureaanroepen van de server naar client (RPC). De RPCs roepen functies aan op clients vanuit .NET-code aan de serverkant. Er zijn verschillende ondersteunde platforms, elk met hun respectieve client-SDK. Hierdoor varieert de programmeertaal die wordt aangeroepen door de RPC-aanroep.

Hier volgen enkele functies van SignalR voor ASP.NET Core:

  • Verwerkt verbindingsbeheer automatisch.
  • Hiermee worden berichten tegelijk verzonden naar alle verbonden clients. Bijvoorbeeld een chatruimte.
  • Hiermee worden berichten verzonden naar specifieke clients of groepen clients.
  • Schaalt om het toenemende verkeer te verwerken.
  • SignalR HubProtocol

De bron wordt gehost in een SignalR opslagplaats op GitHub.

Transports

SignalR ondersteunt de volgende technieken voor het verwerken van realtime communicatie (in volgorde van geleidelijke terugval):

  • WebSockets
  • Server-verzonden gebeurtenissen
  • "Lange polling"

SignalR kiest automatisch de beste transportmethode die zich binnen de mogelijkheden van de server en client bevindt.

Hubs

SignalR maakt gebruik van hubs om te communiceren tussen clients en servers.

Een hub is een pijplijn op hoog niveau waarmee een client en server methoden op elkaar kunnen aanroepen. SignalR verwerkt de verzending automatisch over de grenzen van computers, zodat clients methoden op de server kunnen aanroepen en omgekeerd. U kunt sterk getypte parameters doorgeven aan methoden, waardoor modelbinding mogelijk is. SignalR biedt twee ingebouwde hubprotocollen: een tekstprotocol op basis van JSON en een binair protocol op basis van MessagePack. MessagePack maakt doorgaans kleinere berichten in vergelijking met JSON. Oudere browsers moeten XHR-niveau 2 ondersteunen om ondersteuning te bieden voor het MessagePack-protocol.

Hubs roepen code aan clientzijde aan door berichten te verzenden die de naam en parameters van de methode aan de clientzijde bevatten. Objecten die als methodeparameters worden verzonden, worden gedeserialiseerd met behulp van het geconfigureerde protocol. De client probeert de naam te koppelen aan een methode in de code aan de clientzijde. Wanneer de klant een overeenkomst vindt, roept deze de methode aan en geeft daarbij de gedeserialiseerde parametergegevens door.

Browsers die geen ondersteuning bieden voor ECMAScript 6 (ES6)

SignalR is gericht op ES6. Voor browsers die ES6 niet ondersteunen, transpileert u de bibliotheek naar ES5. Zie Aan de slag met ES6 – ES6 transpileren naar ES5 met Traceur en Babelvoor meer informatie.

Aanvullende bronnen