Crow C++: دليل شامل مع أمثلة عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

Crow — إطار عمل ويب مصغر للغة C++

1. ما هو Crow ولماذا تستخدمه؟

Crow هو إطار عمل ويب مصغر (micro-web framework) خفيف وسريع وحديث للغة C++، مستوحى من إطار Flask الشهير بلغة Python. صُمم لبناء REST API وخدمات الويب وتطبيقات الويب البسيطة بأقل قدر من الكود وبدون الحاجة إلى إعدادات معقدة. تمت كتابة Crow باستخدام معيار C++17/20 ويعتمد على مكتبات asio (أو boost.asio) للمعالجة غير المتزامنة للطلبات، مما يجعله واحداً من أسرع الحلول في مجاله.

لماذا تستخدم Crow؟ إذا كنت بحاجة إلى تشغيل خادم HTTP بلغة C++ بسرعة لمعالجة طلبات JSON أو تقديم ملفات ثابتة أو بناء خدمة مصغرة (microservice)، فإن Crow هو الخيار الأمثل. على عكس الأطر الثقيلة مثل drogon أو pistache، يتميز Crow بحجم صغير جداً وواجهة برمجة تطبيقات (API) بسيطة، ولا يتطلب توليد كود أو ماكرو معقد. يناسب Crow بشكل ممتاز الأنظمة المضمنة (embedded systems) وأجهزة إنترنت الأشياء (IoT) وخوادم الألعاب وأي سيناريو تكون فيه السرعة واستهلاك الذاكرة المنخفض أمراً مهماً.

يدعم Crow توجيه المسارات (routing) بما في ذلك المعاملات الديناميكية في URL، والوسائط (middleware)، والتعامل مع JSON (عبر مكتبة مدمجة أو مكتبة nlohmann/json)، و WebSocket، و CORS، و multipart/form-data، وغيرها الكثير. الإطار في تطور نشط، وله توثيق جيد ومجتمع مستقر.

2. طريقة التثبيت

Crow هي مكتبة "header-only" في معظم الحالات، لذا فإن التثبيت يقتصر على استنساخ المستودع (repository) وتضمين ملفات الرأس (header files). ومع ذلك، يُوصى باستخدام CMake لبناء الأمثلة والمشاريع.

الطريقة الأولى: الاستنساخ (موصى به للتطوير)

git clone https://github.com/CrowCpp/Crow.git
cd Crow
mkdir build
cd build
cmake ..
make
sudo make install

الطريقة الثانية: استخدام vcpkg

vcpkg install crow

الطريقة الثالثة: التضمين عبر CMake FetchContent

include(FetchContent)
FetchContent_Declare(
    crow
    GIT_REPOSITORY https://github.com/CrowCpp/Crow.git
    GIT_TAG v1.0.0
)
FetchContent_MakeAvailable(crow)

target_link_libraries(your_project PRIVATE Crow::Crow)

ملاحظة مهمة: يتطلب Crow مترجمًا يدعم معيار C++17 (مثل gcc 8+ أو clang 7+ أو MSVC 2019+). كما أن مكتبة asio (أو boost.asio) ضرورية. إذا كنت تستخدم vcpkg، فسيتم تثبيت التبعيات تلقائياً.

3. البداية السريعة — مثال عملي مصغر

قم بإنشاء ملف باسم main.cpp بالمحتوى التالي:

#include "crow.h"

int main() {
    crow::SimpleApp app;

    // تعريف مسار لجذر الموقع
    CROW_ROUTE(app, "/")([](){
        return "مرحباً بك في Crow!";
    });

    // تشغيل الخادم على المنفذ 8080
    app.port(8080).multithreaded().run();
}

قم بتجميع الكود وتشغيله:

g++ -std=c++17 -pthread main.cpp -o crow_server
./crow_server

افتح المتصفح واذهب إلى http://localhost:8080. ستظهر لك رسالة الترحيب.

4. أهم الدوال والكلاسات الأساسية

4.1. crow::SimpleApp

التوقيع: class SimpleApp : public crow::App<Middleware...>

الوظيفة: الكلاس الرئيسي للتطبيق. يدير المسارات (routes) والوسائط (middleware) ودورة حياة الخادم. SimpleApp هو إعداد مسبق التهيئة

توصيات