C++ में इवेंट-ड्रिवन आर्किटेक्चर: रिएक्टिव कोड कैसे लिखें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ में इवेंट-ड्रिवन आर्किटेक्चर की आवश्यकता क्यों?

\n

कल्पना करें कि आप एक ऑर्केस्ट्रा के संचालक हैं। आप स्वयं हर वाद्य यंत्र नहीं बजाते, लेकिन आपकी छड़ी का एक झटका प्रतिक्रियाओं की एक श्रृंखला शुरू कर देता है: वायलिन गाने लगते हैं, ड्रम ताल बजाने लगते हैं। इवेंट-ड्रिवन आर्किटेक्चर (इवेंट-ओरिएंटेड आर्किटेक्चर) उसी सिद्धांत पर काम करता है - यह एक दृष्टिकोण है जिसमें सिस्टम बाहरी या आंतरिक इवेंट्स पर प्रतिक्रिया करता है, न कि पूर्व-निर्धारित रैखिक परिदृश्य को निष्पादित करता है।

\n

C++ की दुनिया में, प्रोग्रामिंग की यह शैली विशेष रूप से तब मूल्यवान हो जाती है जब आपको तेज़, स्केलेबल और उत्तरदायी एप्लिकेशन लिखने की आवश्यकता होती है। गेम इंजन, ग्राफिकल इंटरफ़ेस, उच्च-लोड सर्वर - हर जगह जहां उपयोगकर्ता क्रियाओं या स्थिति परिवर्तन पर प्रतिक्रिया महत्वपूर्ण है, इवेंट-ड्रिवन दृष्टिकोण अपरिहार्य है।

\n

इस लेख में, हम केवल सिद्धांत पर चर्चा नहीं करेंगे, बल्कि वास्तविक कोड लिखेंगे जो दिखाएगा कि कैसे C++ में इवेंट-ओरिएंटेड प्रोग्रामिंग उबाऊ अनुक्रमिक कोड को एक जीवंत, रिएक्टिव जीव में बदल देती है।

\n\n

सरल शब्दों में इवेंट-ड्रिवन आर्किटेक्चर क्या है

\n

इवेंट-ड्रिवन आर्किटेक्चर एक आर्किटेक्चरल पैटर्न है जिसमें सिस्टम के घटक इवेंट्स के माध्यम से संवाद करते हैं। किसी ऑब्जेक्ट की स्थिति को सक्रिय रूप से पूछने (polling) के बजाय, आप बस उन इवेंट्स की सदस्यता लेते हैं जिनमें आपकी रुचि है, और उन पर प्रतिक्रिया करते हैं।

\n\n

इवेंट मॉडल के प्रमुख तत्व

\n
    \n
  • Event (इवेंट) — एक संकेत कि कुछ हुआ है (बटन क्लिक किया गया, पैकेट आया, तापमान बदल गया)
  • \n
  • Event producer (स्रोत) — वह जो इवेंट उत्पन्न करता है
  • \n
  • Event consumer (सब्सक्राइबर) — वह जो इवेंट को प्रोसेस करता है
  • \n
  • Event bus (इवेंट बस) — केंद्रीय राउटर जो इवेंट्स को सब्सक्राइबर्स तक पहुंचाता है
  • \n
  • Event loop (इवेंट लूप) — एक अनंत लूप जो इवेंट्स की प्रतीक्षा करता है और उन्हें डिस्पैच करता है
  • \n
\n\n

एक स्मार्ट होम की कल्पना करें। एक मोशन सेंसर (स्रोत) "गति का पता चला" इवेंट उत्पन्न करता है। इवेंट बस इस इवेंट को सब्सक्राइबर्स तक पहुंचाती है: कैमरा (रिकॉर्डिंग शुरू करें) और लैंप (लाइट चालू करें)। कोई किसी से पूछताछ नहीं करता - सब कुछ स्वचालित रूप से होता है।

\n\n

C++ इवेंट-ड्रिवन सिस्टम के लिए आदर्श क्यों है

\n

कुछ लोग सोच सकते हैं: "C++ एक निम्न-स्तरीय भाषा है, रिएक्टिव प्रोग्रामिंग के लिए इसकी आवश्यकता क्यों?" वास्तव में, C++ में इवेंट-ओरिएंटेड प्रोग्रामिंग अद्वितीय लाभ प्रदान करती है:

\n
    \n
  • अधिकतम प्रदर्शन — इवेंट डिस्पैचिंग पर न्यूनतम ओवरहेड
  • \n
  • मेमोरी पर पूर्ण नियंत्रण — आप स्वयं तय करते हैं कि संसाधनों का प्रबंधन कैसे करना है
  • \n
  • मल्टीथ्रेडिंग सपोर्ट — C++ वितरित इवेंट सिस्टम बनाने की अनुमति देता है
  • टेम्पलेट्स और लैम्ब्डा — लचीली इवेंट हैंडलिंग के लिए शक्तिशाली उपकरण
\n\n

स्क्रैच से C++ में इवेंट-ड्रिवन सिस्टम लिखना

\n

आइए एक सरल लेकिन कार्यशील इवेंट सिस्टम बनाएं। हम Observer पैटर्न का उपयोग करेंगे - इवेंट मॉडल को लागू करने का एक क्लासिक तरीका।

\n\n

बेसिक इम्प्लीमेंटेशन: EventBus

\n

हम एक केंद्रीय इवेंट बस बनाकर शुरू करेंगे जो सब्सक्राइबर्स को स्टोर करेगी और इवेंट्स भेजेगी।

\n\n
#include <iostream>\n#include <functional>\n#include <map>\n#include <vector>\n#include <any>\n#include <string>\n\n// इवेंट का प्रकार — सरलता के लिए बस एक स्ट्रिंग\nusing EventType = std::string;\n\n// हैंडलर का प्रकार — एक फंक्शन जो std::any स्वीकार करता है\nusing EventHandler = std::function<void(const std::any&)>;\n\nclass EventBus {\nprivate:\n    std::map<EventType, std::vector<EventHandler>> handlers_;\n\npublic:\n    // इवेंट की सदस्यता लेना\n    void subscribe(const EventType& event, EventHandler handler) {\n        handlers_[event].push_back(handler);\n    }\n\n    // प्रकाशित                

ब्लॉग

पुस्तक अनुशंसाएँ