Quelle est la différence entre les sockets Web et signalR?


Réponse 1:

Définissons d'abord les deux technologies, et celle à choisir en tant que développeur Microsoft ASP.NET.WebSocket est un protocole de communication en duplex intégral (canal de communication bidirectionnel en duplex intégral) via le protocole HTTP. Il s'agit toujours d'une connexion TCP (Transaction Control Protocol) ouverte entre le serveur et le client. Le client peut envoyer des données au serveur et le serveur peut renvoyer des données au client sur le même canal à tout moment. Notez que tous les navigateurs ne prennent pas en charge les sockets Web.

Avantages de l'utilisation de WebSockets:

  • Fournir un modèle de communication en duplex intégral pour le Web.Efficacité accrue du client et du serveur.Facile à utiliser.Ouvrir une connexion en duplex intégral sur le Web.Plus rapide que HTTP.Remplacement de HTTP, Utilise TCP.

Inconvénients de l'utilisation de WebSockets:

  • Le navigateur doit être entièrement conforme à HTML5 (vérifiez les navigateurs de prise en charge pour WebSockets). Reprend le protocole de communication entre le client et le serveur pour une connexion spécifique.

SignalR est une bibliothèque .NET open source pour la création d'applications Web qui nécessitent une interaction utilisateur en direct ou des mises à jour de données en temps réel. Les exemples incluent les applications sociales, les jeux multi-utilisateurs, la collaboration commerciale et les applications d'actualités, de météo ou de mise à jour financière. Celles-ci sont souvent appelées applications en temps réel.

SignalR simplifie le processus de création d'applications en temps réel. Il comprend une bibliothèque de serveur de site ASP.NET et une bibliothèque client JavaScript pour faciliter la gestion des connexions client-serveur et envoyer des mises à jour de contenu aux clients à partir de SignalR Hub. Vous pouvez ajouter la bibliothèque SignalR à une application ASP.NET existante pour obtenir des fonctionnalités en temps réel.

En termes de mise en réseau, un concentrateur est un périphérique de mise en réseau permettant à plusieurs clients de partager une connexion Ethernet. Maintenant, ce concept facilite la compréhension de la fonctionnalité SignalR Hub. Un concentrateur fournit une fonctionnalité de multidiffusion sur une connexion WebSocket. Lorsque l'un des clients envoie un message au concentrateur, il diffuse le message à tous les clients connectés et établit entre eux une connexion appelée connexion client-concentrateur.

Je suis développeur Microsoft ASP.NET, lequel choisir?

  1. L'utilisation de SignalR signifie que la plupart des fonctionnalités supplémentaires dont vous auriez besoin pour mettre en œuvre auront déjà été faites pour vous. Plus important encore, cela signifie que vous pouvez coder votre application pour tirer parti de WebSocket sans avoir à vous soucier de créer un chemin de code distinct pour les anciens clients. SignalR vous évite également d'avoir à vous soucier des mises à jour de WebSocket, car SignalR continuera d'être mis à jour pour prendre en charge les modifications du transport sous-jacent, fournissant à votre application une interface cohérente entre les versions de WebSocket. Bien que vous puissiez certainement créer une solution en utilisant WebSocket seul, SignalR fournit toutes les fonctionnalités dont vous auriez besoin pour vous écrire, telles que le retour à d'autres transports et la révision de votre application pour les mises à jour des implémentations WebSocket.Utiliser SignalR permet la prise en charge des anciens navigateurs ou a un niveau d'abstraction plus élevé sur les détails de l'implémentation du transfert de données ( Vérifiez les navigateurs d'assistance pour WebSockets).

Les références:

  • Introduction aux communications Web en temps réel SignalR.Real avec des applications Web évolutives SignalR.Asynchronous avec des connexions persistantes en temps réel avec SignalR.Building A Private Chat Application Using SignalR.

Réponse 2:

SignalR est une abstraction sur les transports HTTP pour simplifier le développement d'applications Web en temps réel. Il essaiera d'utiliser les Web Sockets s'il est pris en charge par le navigateur, mais retombera avec élégance sur d'autres transports, comme l'explique Scott Hanselman ici: SignalR et Web Sockets

En d'autres termes, la bonne question est de savoir comment SignalR et Web Sockets sont liés les uns aux autres plutôt que quelle est leur différence. Et la réponse courte est que SignalR utilisera les Web Sockets s'il est pris en charge par le navigateur.


Réponse 3:

SignalR est un cadre pour communiquer en temps réel sans interrogation (continuez à demander s'il y a des données à envoyer) entre le serveur et le client (navigateurs). La prise Web est le protocole principal à utiliser dans SignalR lorsque la prise Web est disponible. Si le socket Web n'est pas disponible, SignalR utilisera une manière différente de pousser les données spécialement du serveur vers le client.