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 مرتبطًا بالعنوان والمنفذ المحددين. تدير دورة حياة الخادم.