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

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

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

ابدأ الدورة

Pistache لـ C++: إطار عمل REST من الجيل الجديد

Pistache هي مكتبة حديثة وخفيفة وعالية الأداء لبناء REST API بلغة C++. تم تطويرها من الصفر باستخدام ميزات C++11/14/17، وتوفر للمطورين واجهة نظيفة وبديهية لبناء خوادم وعملاء HTTP. على عكس الحلول الضخمة مثل Boost.Asio، تقدم Pistache واجهة برمجية موجزة تجعل عملية إنشاء خدمات الويب بلغة C++ بنفس سهولة Python أو Node.js، مع الحفاظ على قوة وأداء الكود الأصلي.

لماذا تحتاج Pistache؟ في عالم اليوم من بنية الخدمات المصغرة (Microservices) وإنترنت الأشياء (IoT)، غالبًا ما نحتاج إلى إنشاء خوادم HTTP خفيفة وسريعة وموثوقة. لغة C++ مثالية لهذه المهام بفضل أدائها العالي، لكن كتابة خادم HTTP بلغة C++ كانت تقليديًا عملية معقدة وتستغرق وقتًا طويلاً. تحل Pistache هذه المشكلة من خلال توفير تجريدات جاهزة لتوجيه الطلبات ومعالجتها وتحليل المعاملات وإدارة الجلسات وغير ذلك الكثير. تُستخدم المكتبة بنشاط في بيئات الإنتاج لبناء REST API وWebhooks والخدمات المصغرة وحتى كأساس لتطبيقات الشبكات الأكثر تعقيدًا.

الميزات الرئيسية لـ Pistache تشمل: معالجة غير متزامنة للطلبات باستخدام epoll (لنظام Linux) أو kqueue (لنظام macOS)، دعم HTTP/1.1، تحليل مدمج لمعاملات الاستعلام (Query Parameters) و JSON (عبر مكتبات خارجية)، نظام توجيه مرن مع دعم معاملات المسار (Path Parameters)، إدارة تلقائية للذاكرة عبر المؤشرات الذكية (Smart Pointers)، وأمان كامل للخيوط (Thread Safety). كل هذا يجعل Pistache خيارًا ممتازًا للمشاريع التي تهم فيها سرعة التطوير وسرعة التنفيذ معًا.

تثبيت Pistache

لا يتم تثبيت Pistache عبر pip أو npm، لأنها مكتبة C++ أصلية. يتم التثبيت عبر مديري الحزم النظامية أو عن طريق البناء من المصدر.

لينكس (Ubuntu/Debian)

# تثبيت التبعيات
sudo apt-get update
sudo apt-get install -y libpistache-dev cmake g++ libssl-dev

# التحقق من التثبيت
dpkg -l | grep pistache

ماك (macOS) عبر Homebrew

brew install pistache

البناء من المصدر (طريقة متعددة المنصات)

git clone https://github.com/pistacheio/pistache.git
cd pistache
mkdir build && cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
sudo make install

بداية سريعة: خادم بسيط

لننشئ خادم HTTP بسيطًا يرد بـ "Hello, World!" على أي طلب GET.

#include <pistache/endpoint.h>
#include <pistache/http.h>
#include <iostream>

using namespace Pistache;

class HelloHandler : public Http::Handler {
public:
    HTTP_PROTOTYPE(HelloHandler)

    void onRequest(const Http::Request& request, Http::ResponseWriter writer) override {
        writer.send(Http::Code::Ok, "Hello, World!\n");
    }
};

int main() {
    // إنشاء نقطة نهاية على المنفذ 9080
    Address addr(Ipv4::any(), Port(9080));
    auto opts = Http::Endpoint::options().threads(1);
    Http::Endpoint server(addr);
    server.init(opts);
    server.setHandler(std::make_shared<HelloHandler>());
    server.serve();

    return 0;
}

طريقة الترجمة: g++ -std=c++17 -lpistache -lpthread -o server server.cpp

قم بتشغيل الخادم وافتح في المتصفح http://localhost:9080 — ستظهر لك رسالة الترحيب.

الفئات والدوال الرئيسية في Pistache

دعنا نستعرض المكونات الأساسية للمكتبة مع أمثلة استخدام.

1. Http::Endpoint — نقطة دخول الخادم

التوقيع: Http::Endpoint(const Address& addr);

الوظيفة: تنشئ خادم HTTP مرتبطًا بالعنوان والمنفذ المحددين. تدير دورة حياة الخادم.

توصيات