Sortie de Cutelyst 1.3

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.

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.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s