贝利信息

c++ Drogon框架怎么用_c++高性能异步Web框架入门【后端】

日期:2026-01-08 00:00 / 作者:冰火之心
Drogon写C++ Web服务只需三步:配置环境、编写HTTP处理器、编译运行;原生支持异步I/O、HTTP/1.1/2,无需Boost,适合高性能可控场景。

用 Drogon 写 C++ Web 服务,核心就三步:装好环境、写个 HTTP 处理器、编译运行。它不依赖 Boost,原生支持异步 I/O 和 HTTP/1.1、HTTP/2,适合追求性能和可控性的后端场景。

一、快速上手:从 Hello World 开始

Drogon 的入口是 main() 中的 app().run(),路由通过宏或代码注册。最简例子:

#include 
int main() {
    drogon::app().registerHandler("/hello",
        [](const drogon::HttpRequestPtr& req,
           std::function&& callback) {
            auto resp = drogon::HttpResponse::newHttpResponse();
            resp->setBody("Hello, Drogon!");
            callback(resp);
        },
        {drogon::Get});
    drogon::app().run();
    return 0;
}

说明:

二、项目结构与配置:用 drogon_ctl 管理

别手写 CMakeLists —— 用官方工具 drogon_ctl 初始化工程:

立即学习“C++免费学习笔记(深入)”;

drogon_ctl create project myapp
cd myapp
drogon_ctl create controller UserController

这会自动生成:

编译只需:mkdir build && cd build && cmake .. && make

三、异步与数据库:自然支持 Future 和 ORM

Drogon 原生用 std::future / coroutine(C++20)做异步,比如查数据库不阻塞主线程:

app().defaultDbClient()->execSqlAsync("SELECT * FROM users")
    .then([callback](const drogon::orm::Result& r) {
        auto json = drogon::Json::Value::array();
        for (const auto& row : r) {
            json.push_back(row.toJson());
        }
        auto resp = drogon::HttpResponse::newHttpJsonResponse(json);
        callback(resp);
    });

关键点:

四、部署与进阶:静态资源、HTTPS、热重载

生产常用配置在 config.json 中调整:

上线建议用 systemd 或 supervisor 托管进程,Drogon 自带 graceful shutdown,收到 SIGTERM 会等请求完成再退出。

基本上就这些。Drogon 不是“胶水框架”,它把控制权交还给 C++ 工程师——你决定内存怎么管、异步怎么链、错误怎么抛。上手略比 Express 或 Flask 陡一点,但性能和确定性是实打实的。