Developpez.com - Rubrique Qt

Le Club des Développeurs et IT Pro

Le framework Web basé sur Qt Cutelyst 2 implémente le protocole HTTP/2

Pour une meilleure performance des applications Web

Le 2018-04-11 16:50:54, par dourouc05, Responsable Qt & Livres
Cutelyst 2 est une évolution majeure dans le framework Web basé sur Qt. L’utilisation de C++ pour le framework et les applications laisse la possibilité d’atteindre une très faible latence pour la majorité des cas d’utilisation. Cependant, HTTP/2 n’était pas encore géré par Cutelyst et cette évolution du protocole HTTP est justement prévue pour améliorer fortement la performance des navigateurs : compression, envoi de requêtes multiples dans une même connexion TCP sans attendre les réponses des requêtes précédentes, etc.

Cutelyst 2 apporte donc une gestion de la dernière itération du protocole HTTP. Ce changement casse légèrement l’API et l’ABI de la bibliothèque, d’où la nouvelle version majeure ; cependant, ces changements sont très limités et ne devraient pas avoir d’impact réel sur la plupart des applications. Par exemple, CMlyst et Stickyst n’ont eu besoin que d’une recompilation en changeant le nom de la classe du moteur du framework pour passer à la nouvelle version, les sources n’ont pas changé.

Cette version majeure a aussi été l’occasion de nettoyer le code : le cœur du framework a été ainsi largement réduit, une partie du code spécifique à WSGI passant dans ce module. La compilation et les tests se passent maintenant sans souci avec Visual C++.

Ce n’est pas tout au niveau des apports. Le module WSGI utilise une nouvelle boucle événementielle, EPoll, au lieu de celle de Qt. L’avantage principal est une performance sans dégradation majeure lorsque le nombre de connexions simultanées augmente foncièrement. Les validateurs ont été revus, avec notamment un nouveau pour gérer la qualité des mots de passe.

L’analyseur de paquets HTTP/2 est une grande valeur ajoutée pour le projet. La plus grande partie de cette implémentation concerne HPACK, l’algorithme de compression utilisé par HTTP/2 (qui a abandonné GZip, étant donné qu’il peut mener à des failles de sécurité avec HTPS). L’implémentation de HTTP/2 passe tous les tests de h2spec et peut donner une performance largement supérieure à HTTP/1. Le seul point manquant est la poussée de paquets vers le client (HTTP server push), notamment à cause des différents mécanismes des navigateurs pour la gérer qui rendent cette fonctionnalité difficile à implémenter (pour des gains assez limités). Ceci devrait être comblé dans une prochaine version, cependant.

Cutelyst 2.1 est sorti très peu de temps après la 2.0, principalement pour corriger des défauts assez importants. Une nouvelle extension est disponible pour gérer le changement de langue. Cutelyst 2.1 est aussi compatible avec Qt 5.11.

Sources : Cutelyst 2 released with HTTP/2 support, Cutelyst 2.1 Released.
  Discussion forum
2 commentaires