SignalR
Le SignalR est une bibliothèque destinée aux développeurs ASP.NET Core simplifiant le processus d'ajout de fonctionnalités Web en temps réel aux applications. La fonctionnalité Web en temps réel est la capacité du code serveur à envoyer instantanément du contenu aux clients connectés dès qu'il devient disponible, plutôt que de laisser le serveur attendre qu'un client demande de nouvelles données.
Le SignalR peut être utilisé pour ajouter tout type de fonctionnalité Web «en temps réel» à votre application ASP.NET Core. Bien que le chat soit souvent utilisé comme exemple, vous pouvez faire bien plus. Chaque fois qu'un utilisateur actualise une page Web pour voir de nouvelles données, ou que la page implémente une interrogation longue pour récupérer de nouvelles données, elle est candidate à l'utilisation de SignalR. Les exemples incluent les tableaux de bord et les applications de surveillance, les applications collaboratives (telles que l'édition simultanée de documents), les mises à jour de l'avancement des travaux et les formulaires en temps réel.
Le SignalR permet également de créer des types d'applications Web entièrement nouveaux nécessitant des mises à jour à haute fréquence du serveur, par exemple les jeux en temps réel.
Le SignalR fournit une API simple pour créer des appels de procédure distante (RPC) de serveur à client appelant des fonctions JavaScript dans les navigateurs clients (et d'autres plates-formes clientes) à partir du code .NET côté serveur. SignalR inclut également une API pour la gestion des connexions (par exemple, les événements de connexion et de déconnexion) et le regroupement des connexions.
- Support des communications en temps réel : SignalR permet aux serveurs de pousser des données vers des clients connectés en temps réel. Cela permet des applications comme :
- Chats en direct.
- Jeux en ligne en temps réel.
- Avertissements en temps réel (par exemple, alertes ou mises à jour).
- Suivi de la localisation en temps réel.
- Multiples protocoles de transport : SignalR sélectionne automatiquement le meilleur mécanisme de transport disponible pour établir une connexion en temps réel, parmi :
- WebSockets : Si pris en charge par le client et le serveur, c'est le transport privilégié pour des communications rapides et bidirectionnelles.
- Server-Sent Events : Unidirectionnel, du serveur vers le client.
- Long Polling : Si WebSockets et Server-Sent Events ne sont pas disponibles, le client et le serveur échangent des données à travers des requêtes HTTP périodiques.
- Modèle de programmation basé sur les hubs : SignalR fonctionne via des hubs, étant des classes côté serveur permettant aux clients de communiquer avec le serveur, et vice-versa. Chaque client connecté peut appeler des méthodes sur le serveur via ces hubs, et le serveur peut invoquer des méthodes sur les clients.
- Gestion des connexions et des groupes :
- Connexions persistantes : SignalR maintient les connexions entre les clients et le serveur, permettant de suivre les connexions individuelles par identificateur.
- Groupes : Les clients peuvent être organisés en groupes pour permettre au serveur de diffuser des messages à des sous-ensembles de clients.
- Support des communications bidirectionnelles : SignalR permet des interactions bidirectionnelles. Les clients peuvent appeler des méthodes sur le serveur, et le serveur peut également appeler des méthodes sur les clients.
- Mise à l'échelle : SignalR peut être utilisé avec des services comme Azure SignalR Service pour gérer la montée en charge des connexions sur plusieurs serveurs. Ce service gère les messages et connexions entre plusieurs instances d'application, assurant une mise à l'échelle transparente.
- Tolérance aux interruptions de réseau : SignalR gère les interruptions de réseau en rétablissant automatiquement la connexion lorsque cela est possible. En cas de perte de connexion, il réessaie de se reconnecter pour maintenir la communication.
- Interopérabilité entre plusieurs clients : SignalR prend en charge une variété de clients, notamment :
- Navigateurs web (via JavaScript ou TypeScript).
- Applications .NET (via le client .NET SignalR).
- Applications mobiles (via des clients natifs ou Xamarin).
- Clients Java.
- Authentification et autorisation : SignalR s'intègre facilement avec les mécanismes d'authentification et d'autorisation d'ASP.NET Core, ce qui permet de sécuriser les hubs et de définir qui peut se connecter ou appeler des méthodes spécifiques.
- Support de JSON et de MessagePack : SignalR utilise le format JSON par défaut pour la sérialisation des messages, mais il prend également en charge MessagePack, un format binaire plus compact et performant pour les communications entre clients et serveurs.
- Simplicité d'intégration avec ASP.NET Core : SignalR est intégré nativement dans le pipeline d'ASP.NET Core, facilitant son utilisation dans les applications web. Vous pouvez facilement l'ajouter à une application ASP.NET Core avec quelques lignes de configuration.
- Support des clients JavaScript et .NET :
- JavaScript/TypeScript : Pour les applications front-end, SignalR fournit une bibliothèque JavaScript permettant de se connecter et d'interagir avec les hubs du côté serveur.
- Clients .NET : Les applications .NET peuvent utiliser SignalR via un paquet NuGet pour établir des connexions et échanger des messages en temps réel.