مقدمة
على الرغم من أن لغة C++ نادراً ما ترتبط بتطوير الويب، إلا أن هذه اللغة تمتلك إمكانات هائلة لإنشاء تطبيقات خادم عالية التحميل. تقدم أطر عمل C++ الحديثة أداءً قريباً من "المعدن الخام"، مع توفير تجريدات مريحة للعمل مع HTTP و WebSocket و REST API.
في هذه المقالة، سنستعرض أفضل 10 أطر عمل C++ لتطوير الويب، والتي تحظى بدعم نشط من المجتمع ومناسبة لكل من الخدمات المصغرة والمشاريع المؤسسية الكبيرة.
1. Drogon — العملاق غير المتزامن
Drogon هو أشهر إطار عمل ويب حديث بلغة C++. تم بناؤه على نموذج الإدخال/الإخراج غير المتزامن (استناداً إلى libuv) ويدعم HTTP/1.1 و HTTP/2 و WebSocket، بالإضافة إلى العمل مع قواعد البيانات عبر ORM.
الميزات الرئيسية:
- أداء عالٍ (حتى مليون طلب/ثانية على المسارات البسيطة)
- دعم مدمج لـ JSON و SSL و WebSocket
- توليد تلقائي لوثائق OpenAPI
- دعم PostgreSQL و MySQL و SQLite
مثال لخادم بسيط على Drogon:
#include <drogon/drogon.h>
int main() { app().registerHandler("/hello", [](const HttpRequestPtr& req, std::function<void (const HttpResponsePtr&)> &&callback) { auto resp = HttpResponse::newHttpJsonResponse( Json::Value("Hello, World!") ); callback(resp); }); app().addListener("0.0.0.0", 8080).run();}2. Crow — البساطة والسرعة
Crow هو إطار عمل صغير وخفيف الوزن، مستوحى من Python Flask. إنه مثالي لإنشاء REST API بسيطة وخدمات مصغرة بدون تبعيات غير ضرورية.
المزايا:
- حجم ملف ثنائي ضئيل
- دعم C++14/17
- توجيه مدمج و middleware
- سهولة التكامل مع المشاريع الحالية
مثال لمسار في Crow:
#include "crow.h"
int main() { crow::SimpleApp app; CROW_ROUTE(app, "/api/status") ([]() { return crow::response(200, "{\\"status\\": \\"ok\\"}"); }); app.port(8080).multithreaded().run();}3. Boost.Beast — قوة Boost
Boost.Beast هي مكتبة تعتمد على Boost.Asio، وتوفر أدوات منخفضة المستوى للعمل مع HTTP و WebSocket و WebTransport. إنه ليس إطار عمل كاملاً، بل هو مادة بناء لإنشاء خوادم خاصة بك.
متى تختاره:
- عند الحاجة إلى أقصى تحكم في مكدس الشبكة
- عندما يستخدم المشروع Boost بالفعل
- عند الحاجة إلى دعم بروتوكولات مخصصة
خادم HTTP أساسي:
#include <boost/beast/http.hpp>#include <boost/asio.hpp>namespace http = boost::beast::http;
int main() { boost::asio::io_context ioc; // ... إعداد acceptor ومعالجة الطلبات ioc.run();}4. Pistache — الأناقة والبساطة
Pistache هو إطار عمل يركز على سهولة الاستخدام. يوفر API نظيفاً لإنشاء خدمات REST مع دعم العمليات غير المتزامنة.
- دعم HTTP/1.0 و HTTP/1.1
- محلل طلبات مدمج
- دعم SSL/TLS
- عمل مريح مع معاملات الاستعلام (query-parameters)
5. Wt — مجموعة أدوات الويب C++
Wt (Witty) هو إطار عمل فريد يسمح بإنشاء تطبيقات ويب كاملة مع واجهة مستخدم رسومية، كما في Qt. يقوم بتوليد JavaScript من جانب العميل تلقائياً.
الميزات:
- واجهة مستخدم تشبه تطبيقات سطح المكتب عبر الأدوات (widgets)
- دعم WebSocket للتحديثات في الوقت الفعلي
- مصادقة مدمجة