Le framework Web basé sur Qt Cutelyst 2 implémente le protocole HTTP/2
Pour une meilleure performance des applications Web

Le , par dourouc05, Responsable Qt
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.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de dourouc05 dourouc05 - Responsable Qt https://www.developpez.com
le 06/05/2018 à 5:18
Le framework Web basé sur Qt Cutelyst annonce sa version 2.2. Celle-ci peaufine son implémentation de HTTP/2, notamment pour le module WebSockets.
La classe Context possède maintenant deux nouvelles méthodes pour les applications asynchrones : wait(), pour créer un compteur dans la boucle événementielle locale et indiquer quand elle doit se finir ; next(), pour décrémenter ce compteur (et rapprocher le contexte de sa fin).
Pour améliorer la qualité du code, le projet est maintenant inscrit sur Codacy, qui a déjà permis de trouver certains défauts.
Source.
Avatar de dourouc05 dourouc05 - Responsable Qt https://www.developpez.com
le 16/06/2018 à 23:39
Cutelyst est un framework Web qui exploite Qt, en C++. La dernière version en date, la 2.4, apporte une série de changements bienvenus.
D’abord, les paramètres fournis par l’URL (méthode GET de HTTP) et dans le contenu de la requête (méthode POST) sont gérés de telle sorte que, lorsqu’un même paramètre est précisé plusieurs fois, seule la dernière valeur est récupérée.
L’implémentation censée faciliter le développement d’applications asynchrones a causé une série de problèmes lors des tests de performance TechEmpower qu’il n’était pas possible de résoudre (mauvaise approche lors de la conception de cette technique), les méthodes correspondantes sont donc désapprouvées (même si elles n’ont été ajoutées que lors de la version 2.2).
Les mêmes tests de performance ont permis de déceler quelques problèmes au niveau de l’assignation de l’affinité envers les cœurs : tous les processus travailleurs étaient associés au même cœur.
Pour faciliter le développement d’applications REST, de nouvelles méthodes ont été ajoutées pour vérifier la méthode HTTP d’une requête : isPut, isDelete, etc. Pour le même public cible, de nouvelles fonctions facilitent la conversion des résultats de requêtes en base de données vers des fichiers JSON.
Avec la communauté croissante, quelques défauts dans la boucle d’événements EPoll ont été corrigés. Également, dans la même veine que les fonctions SQL vers JSON, de nouvelles fonctions permettent de transformer rapidement des objets de type QVariant (Hash, Map, List, etc.) pour les utiliser avec Grantlee.
Sources : Cutelyst 2.3.0 released, Cutelyst 2.4.0 released.

 
Contacter le responsable de la rubrique Accueil