Sortie de Cutelyst 1.3
le framework Web pour Qt gère maintenant le protocole FastCGI et améliore fortement sa performance

Cutelyst est un framework Web qui se base sur Qt en C++. Ses concepts sont très proches de ceux utilisés par Qt pour les interfaces graphiques, mais du côté Web. La version 1.3 apporte deux améliorations importantes. La première concerne la validation des entrées : adresse électronique, adresse IP, fichier JSON, date, etc. Les validateurs utilisés peuvent être partagées entre les différents fils d’exécution de l’application : il n’en faut qu’une instance pour servir un nombre illimité de clients.

Code qt : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
static Validator v({ new ValidatorRequired(QStringLiteral("username") });
if (v.validate(c,Validator::FillStashOnError)) { 
    // …
}

La deuxième amélioration concerne plutôt la performance. Jusqu’à la version précédente, Cutelyst ne communiquait avec le serveur Web (Apache, NGINX, etc.) que par uWSGI. Cependant, le protocole uWSGI a un défaut de conception relativement gênant : la communication n’est pas gardée entre le serveur Web et l’application ; ainsi, lorsque le client effectue une nouvelle requête, la connexion HTTP est conservée jusqu’au serveur Web, mais pas jusqu’à l’application. FastCGI, au contraire, n’a pas cette limitation et est accepté par bon nombre de serveurs Web.

L’impact est important : là où uWSGI ne pouvait gérer que 30 000 requêtes par seconde avec NGINX, la simple transition vers FastCGI permet de gérer jusque 42 000 requêtes par seconde. Après d’autres optimisations de plus petite ampleur (comme la manière de gérer les en-têtes HTTP dans Cutelyst), le total monte même à 80 000 requêtes par seconde.

Source : Cutelyst 1.3.0 released.


Voir le code source.