Drogon C++ : guide complet avec exemples pratiques
Bienvenue dans l'univers du développement web haute performance en C++ avec le framework Drogon. Si vous appréciez les capacités asynchrones de Node.js, la simplicité de Flask ou Django, mais que la performance au niveau du code natif est cruciale pour vous, Drogon est fait pour vous. Dans cet article, nous allons détailler comment installer Drogon, écrire votre première application, utiliser ses méthodes clés et éviter les erreurs courantes.
1. Qu'est-ce que Drogon et pourquoi l'utiliser ?
Drogon est un framework web multiplateforme haute performance pour le langage C++. Contrairement à de nombreuses autres solutions, il repose sur un modèle d'entrée-sortie (E/S) asynchrone utilisant sa propre boucle d'événements (event loop). Cela permet de gérer des milliers de connexions simultanées sans créer un thread par connexion, réduisant considérablement la surcharge mémoire et les changements de contexte.
Pourquoi utiliser Drogon ? D'abord, la vitesse. Grâce au C++ compilé et aux E/S non bloquantes, Drogon peut traiter des requêtes avec une latence de l'ordre de la microseconde, ce qui en fait un choix idéal pour les API REST à forte charge, les microservices et les applications en temps réel. Ensuite, une richesse fonctionnelle "prête à l'emploi" : un ORM pour interagir avec les bases de données, le support de WebSocket, JSON, SSL/TLS, des middlewares, un moteur de templates (ctemplate) et un client HTTP intégré.
Le framework est activement développé, dispose d'une documentation claire et d'une communauté accueillante. Si vous avez besoin de créer un backend qui exploite au maximum les capacités du matériel, sans sacrifier la clarté du code, Drogon sera votre outil de confiance.
2. Installation
Drogon ne s'installe pas via un gestionnaire de paquets comme pip ou npm. Il doit être compilé à partir des sources. Cependant, le processus est largement automatisé grâce à CMake et vcpkg.
Méthode 1 : Installation via vcpkg (recommandée)
# Clonez vcpkg si ce n'est pas déjà fait
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh # ou bootstrap-vcpkg.bat sur Windows
# Installez Drogon
./vcpkg install drogon
Méthode 2 : Compilation manuelle depuis les sources
# Installez les dépendances (Ubuntu/Debian)
sudo apt-get install git cmake build-essential libssl-dev libjsoncpp-dev libboost-all-dev libsqlite3-dev libmariadb-dev libpq-dev
# Clonez le dépôt
git clone https://github.com/drogonframework/drogon.git
cd drogon
# Créez un dossier de build
mkdir build && cd build
# Configurez et compilez
cmake ..
make -j$(nproc)
# Installez sur le système
sudo make install
Après l'installation, vous pouvez intégrer Drogon dans vos projets CMake :
find_package(Drogon REQUIRED)
target_link_libraries(my_app PRIVATE Drogon::Drogon)
3. Démarrage rapide — un exemple minimal fonctionnel
Écrivons un serveur HTTP très simple qui répond "Hello, World!" à toute requête GET.
// main.cpp
#include <drogon/drogon.h>
int main() {
// Créez une instance de l'application
drogon::app().registerHandler("/", [](const drogon::HttpRequestPtr& req,
std::function<void (const drogon::HttpResponsePtr&)> &&callback) {
// Créez une réponse
auto resp = drogon::HttpResponse::newHttpResponse();
resp->setBody("Hello, World!");
callback(resp);
});
// Lancez le serveur sur le port 8080
drogon::app().addListener("0.0.0.0", 8080).run();
return 0;
}
Compilation et exécution :
g++ -std=c++17 -o hello main.cpp -ldrogon -ljsoncpp -lssl -lcrypto -lpthread
./hello
Ouvrez maintenant votre navigateur et allez sur http://localhost:8080. Vous verrez le fameux "Hello, World!".