WebSockets - API

API - Définition

API, une abréviation de Application Program Interface, est un ensemble de routines, de protocoles et d'outils pour créer des applications logicielles.

Certaines caractéristiques importantes sont -

  • L'API spécifie comment les composants logiciels doivent interagir et les API doivent être utilisées lors de la programmation des composants d'interface utilisateur graphique (GUI).

  • Une bonne API facilite le développement d'un programme en fournissant tous les éléments de base.

  • REST, qui s'exécute généralement sur HTTP, est souvent utilisé dans les applications mobiles, les sites Web sociaux, les outils de mashup et les processus métier automatisés.

  • Le style REST souligne que les interactions entre les clients et les services sont améliorées par un nombre limité d'opérations (verbes).

  • La flexibilité est fournie par l'affectation des ressources; leurs propres identificateurs de ressources universels (URI) uniques.

  • REST évite toute ambiguïté car chaque verbe a une signification spécifique (GET, POST, PUT et DELETE)

Avantages de Web Socket

Web Socket résout quelques problèmes avec REST ou HTTP en général -

Bidirectionnel

HTTP est un protocole unidirectionnel dans lequel le client lance toujours une requête. Le serveur traite et renvoie une réponse, puis le client la consomme. Web Socket est un protocole bidirectionnel dans lequel il n'y a pas de modèles de messages prédéfinis tels que demande / réponse. Le client ou le serveur peut envoyer un message à l'autre partie.

Un duplex plein

HTTP permet au message de demande d'aller du client au serveur, puis le serveur envoie un message de réponse au client. À un moment donné, soit le client parle au serveur, soit le serveur parle au client. Web Socket permet au client et au serveur de communiquer indépendamment l'un de l'autre.

Connexion TCP unique

En règle générale, une nouvelle connexion TCP est initiée pour une requête HTTP et se termine après la réception de la réponse. Une nouvelle connexion TCP doit être établie pour une autre requête / réponse HTTP. Pour Web Socket, la connexion HTTP est mise à niveau à l'aide du mécanisme de mise à niveau HTTP standard et le client et le serveur communiquent via cette même connexion TCP pendant le cycle de vie de la connexion Web Socket.

Le graphique ci-dessous montre le temps (en millisecondes) nécessaire pour traiter N messages pour une taille de charge utile constante.

Voici les données brutes qui alimentent ce graphique -

Le graphique et le tableau ci-dessus montrent que la surcharge REST augmente avec le nombre de messages. Cela est vrai parce que de nombreuses connexions TCP doivent être lancées et terminées et que de nombreux en-têtes HTTP doivent être envoyés et reçus.

La dernière colonne montre en particulier le facteur de multiplication pour le temps nécessaire pour répondre à une requête REST.

Le deuxième graphique montre le temps nécessaire pour traiter un nombre fixe de messages en faisant varier la taille de la charge utile.

Voici les données brutes qui alimentent ce graphique -

Ce graphique montre que le coût incrémentiel du traitement de la demande / réponse pour un point de terminaison REST est minime et que la plupart du temps est consacré à l'initiation / la terminaison de la connexion et au respect de la sémantique HTTP.

Conclusion

Web Socket est un protocole de bas niveau. Tout, y compris un modèle de conception simple de demande / réponse, comment créer / mettre à jour / supprimer les ressources nécessaires, les codes d'état, etc., à construire par-dessus. Tous ces éléments sont bien définis pour HTTP.

Web Socket est un protocole avec état tandis que HTTP est un protocole sans état. Les connexions Web Socket peuvent évoluer verticalement sur un seul serveur, tandis que HTTP peut évoluer horizontalement. Il existe des solutions propriétaires pour la mise à l'échelle horizontale de Web Socket, mais elles ne sont pas basées sur des normes. HTTP est livré avec de nombreux autres avantages tels que la mise en cache, le routage et le multiplexage. Tous ces éléments doivent être définis au-dessus de Web Socket.