Crow — C++ के लिए माइक्रो वेब फ्रेमवर्क
1. यह क्या है और इसकी आवश्यकता क्यों है?
Crow एक हल्का, तेज़ और आधुनिक माइक्रो वेब फ्रेमवर्क है जो C++ भाषा के लिए बनाया गया है। यह लोकप्रिय Python फ्रेमवर्क Flask से प्रेरित है। इसका उपयोग REST API, वेब सर्विसेज़ और सरल वेब एप्लिकेशन बनाने के लिए किया जाता है, जिसमें न्यूनतम कोड की आवश्यकता होती है और जटिल कॉन्फ़िगरेशन की ज़रूरत नहीं होती। Crow C++17/20 में लिखा गया है और अनुरोधों को एसिंक्रोनस रूप से प्रोसेस करने के लिए asio (या boost.asio) लाइब्रेरी का उपयोग करता है, जो इसे अपनी श्रेणी में सबसे अधिक प्रदर्शनशील समाधानों में से एक बनाता है।
Crow का उपयोग क्यों करें? अगर आपको JSON अनुरोधों को हैंडल करने, स्टैटिक फ़ाइलें सर्व करने या माइक्रोसर्विस बनाने के लिए C++ में तेज़ी से HTTP सर्वर तैनात करना है, तो Crow सबसे अच्छा विकल्प है। drogon या pistache जैसे भारी फ्रेमवर्क के विपरीत, Crow का आकार न्यूनतम है, API सरल है, और इसमें कोड जनरेशन या जटिल मैक्रोज़ की आवश्यकता नहीं है। यह एम्बेडेड सिस्टम, IoT डिवाइस, गेम सर्वर और ऐसे किसी भी परिदृश्य के लिए एकदम सही है जहाँ गति और कम मेमोरी खपत महत्वपूर्ण है।
Crow रूटिंग (URL में डायनामिक पैरामीटर सहित), मिडलवेयर, JSON (बिल्ट-इन लाइब्रेरी या nlohmann/json के माध्यम से), WebSocket, CORS, multipart/form-data और बहुत कुछ सपोर्ट करता है। यह फ्रेमवर्क सक्रिय रूप से विकसित हो रहा है, इसकी अच्छी डॉक्यूमेंटेशन और एक स्थिर समुदाय है।
2. इंस्टॉलेशन
Crow एक header-only लाइब्रेरी है (ज़्यादातर मामलों में), इसलिए इंस्टॉलेशन में रिपॉजिटरी को क्लोन करना और हेडर फ़ाइलों को शामिल करना शामिल है। हालांकि, उदाहरणों और प्रोजेक्ट्स को बिल्ड करने के लिए CMake का उपयोग करने की सलाह दी जाती है।
तरीका 1: क्लोन करना (डेवलपमेंट के लिए अनुशंसित)
git clone https://github.com/CrowCpp/Crow.git
cd Crow
mkdir build
cd build
cmake ..
make
sudo make install
तरीका 2: vcpkg का उपयोग करना
vcpkg install crow
तरीका 3: 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;
// रूट URL के लिए रूट परिभाषित करें
CROW_ROUTE(app, "/")([](){
return "Hello, 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...>
यह क्या करता है: एप्लिकेशन का मुख्य क्लास। यह रूट्स, मिडलवेयर और सर्वर के जीवनचक्र को मैनेज करता है। SimpleApp एक पूर्व-कॉन्फ़िगर किया गया संस्करण है जो ज़्यादातर उपयोगों के लिए तैयार है।