घटना-संचालित वास्तुकला

घटना-संचालित वास्तुकला (ईडीए) एक सॉफ़्टवेयर वास्तुशिल्प  प्रतिमान है जो  घटना (कंप्यूटिंग)  के उत्पादन, पहचान, खपत और प्रतिक्रिया को बढ़ावा देता है।

अवलोकन
एक घटना को स्थिति (कंप्यूटर विज्ञान) में एक महत्वपूर्ण परिवर्तन के रूप में परिभाषित किया जा सकता है। उदाहरण के लिए, जब कोई उपभोक्ता कार खरीदता है, तो कार की स्थिति बिक्री के लिए से बेची गई में परिवर्तित हो जाती है। एक कार विक्रेता की प्रणाली वास्तुकला इस स्थिति परिवर्तन को एक घटना के रूप में मान सकता है जिसकी घटना को वास्तुकला के अन्दर अन्य अनुप्रयोगों के लिए जाना जा सकता है। एक औपचारिक दृष्टिकोण से, जो उत्पादित, प्रकाशित, प्रचारित, पता लगाया या उपभोग किया जाता है, वह एक (सामान्यतः अतुल्यकालिक) संदेश होता है, जिसे घटना अधिसूचना कहा जाता है, न कि स्वयं घटना, जो स्थिति परिवर्तन है जो संदेश उत्सर्जन को ट्रिगर करता है। घटनाएँ यात्रा नहीं करतीं, वे बस घटित होती हैं। चूंकि, घटना शब्द का उपयोग अधिकांशतः अधिसूचना संदेश को निरूपित करने के लिए लाक्षणिक रूप का उपयोग किया जाता है, जिससे कुछ भ्रम हो सकता है। यह घटना-संचालित वास्तुकला के कारण अधिकांशतः 'संदेश-संचालित वास्तुकला' के ऊपर डिज़ाइन किया जा रहा है, जहां इस तरह के संचार स्वरूप में प्रत्येक संचार को कैसे संभाला जाना चाहिए, यह अंतर करने के लिए इनपुट में से एक को टेक्स्ट-ओनली, संदेश की आवश्यकता होती है।

यह वास्तु स्वरूप उन अनुप्रयोगों और प्रणालियों के डिजाइन और कार्यान्वयन द्वारा लागू किया जा सकता है जो शिथिल युग्मित सॉफ्टवेयर घटक और सेवाओं के बीच घटनाओं को प्रसारित करते हैं। एक घटना-संचालित प्रणाली में सामान्यतः घटना उत्सर्जक (या एजेंट), घटना उपभोक्ता (या सिंक), और घटना प्रणाली सम्मिलित होते हैं। एमिटर्स की घटनाओं का पता लगाने, इकट्ठा करने और स्थानांतरित करने का उत्तरदायी है। एक घटना उत्सर्जक घटना के उपभोक्ताओं को नहीं जानता है, यह भी नहीं जानता कि उपभोक्ता उपस्थित  है या नहीं, और यदि यह उपस्थित  है, तो यह नहीं जानता कि घटना का उपयोग कैसे किया जाता है या आगे संसाधित किया जाता है। किसी घटना के प्रस्तुत होते ही प्रतिक्रिया लागू करने की उत्तरदायिता सिंक की होती है। प्रतिक्रिया पूरी तरह से सिंक द्वारा प्रदान की जा सकती है या नहीं भी हो सकती है। उदाहरण के लिए, सिंक के पास घटना को किसी अन्य घटक को फ़िल्टर करने, बदलने और अग्रेषित करने की उत्तरदायी हो सकती है या यह इस तरह की घटना के लिए स्वयं निहित प्रतिक्रिया प्रदान कर सकता है। घटना प्रणाली ऐसे वाहक होते हैं जिनमें घटना उत्सर्जकों से घटना उपभोक्ताओं तक घटना प्रसारित किए जाते हैं। घटनाओं के सही वितरण का ज्ञान केवल घटना प्रणाली के अन्दर ही उपस्थित  है। घटना प्रणाली का भौतिक कार्यान्वयन पारंपरिक घटकों जैसे संदेश-उन्मुख मध्यस्थ या बिंदु से बिंदु तक संचार पर आधारित हो सकता है जिसके लिए अधिक उपयुक्त की आवश्यकता हो सकती है.

एक घटना-संचालित वास्तुकला के आसपास निर्माण प्रणाली वितरित कंप्यूटिंग मॉडल में क्षैतिज मापनीयता को सरल करता है और उन्हें विफलता के प्रति अधिक लचीला बनाता है। ऐसा इसलिए है क्योंकि उच्च-उपलब्धता के लिए कई समांतर स्नैपशॉट में एप्लिकेशन स्थिति की प्रतिलिपि बनाई जा सकती है। नई घटनाओं को कहीं भी आरम्भ किया जा सकता है, लेकिन इससे भी महत्वपूर्ण बात यह है कि डेटा स्टोर के नेटवर्क में आने पर प्रत्येक को अपडेट करते हुए प्रसारित किया जाता है। अतिरिक्त नोड्स जोड़ना भी तुच्छ हो जाता है: आप बस आवेदन की स्थिति की एक प्रति ले सकते हैं, इसे घटनाओं की एक धारा प्रदान कर सकते हैं और इसके साथ चल सकते हैं।

घटना-संचालित वास्तुकला सेवा-उन्मुख वास्तुकला (एसओए) का पूरक हो सकता है क्योंकि सेवाओं को आने वाली घटनाओं पर ट्रिगर द्वारा सक्रिय किया जा सकता है।

यह प्रतिमान विशेष रूप से तब उपयोगी होता है जब सिंक कोई प्रदान नहीं करता है.

घटना-संचालित एसओए|एसओए 2.0 उन निहितार्थों को विकसित करता है जो एसओए और ईडीए वास्तुकला एक नए घटना स्वरूप बनाने के लिए पहले के अज्ञात कारण संबंधों का लाभ उठाकर एक समृद्ध, अधिक सक्षम स्तर प्रदान करते हैं। यह नया व्यापारिक सूचना स्वरूप आगे स्वायत्त मानव या स्वचालित प्रसंस्करण को ट्रिगर करता है जो मूल्य-वर्धित जानकारी को मान्यता प्राप्त स्वरूप में इंजेक्ट करके उद्यम के लिए घातीय मूल्य जोड़ता है जो पहले प्राप्त नहीं किया जा सकता था।

घटना संरचना
एक घटना को दो भागों में बनाया जा सकता है, घटना हेडर और घटना बॉडी। घटना हेडर में घटना का नाम, घटना के लिए टाइम स्टैम्प और घटना के प्रकार जैसी जानकारी सम्मिलित हो सकती है।

घटना बॉडी पता लगाए गए स्थिति परिवर्तन का विवरण प्रदान करती है। एक घटना निकाय को स्वरूप या तर्क के साथ भ्रमित नहीं होना चाहिए जो कि घटना की घटना की प्रतिक्रिया में लागू हो सकता है।

घटना प्रवाह परतें
एक घटना संचालित वास्तुकला को चार तार्किक परतों पर बनाया जा सकता है, जो एक घटना के संवेदन (यानी, एक महत्वपूर्ण अस्थायी स्थिति या तथ्य) से आरम्भ होती है, एक घटना संरचना के रूप में इसके तकनीकी प्रतिनिधित्व के निर्माण के लिए आगे बढ़ती है और एक गैर के साथ समाप्त होती है। उस घटना पर प्रतिक्रियाओं का खाली सेट।

घटना प्रोड्यूसर
पहली तार्किक परत घटना निर्माता है, जो एक तथ्य को समझती है और एक घटना संदेश के रूप में उस तथ्य का प्रतिनिधित्व करती है। एक उदाहरण के रूप में, एक घटना प्रोड्यूसर एक ईमेल क्लाइंट, एक ई-कॉमर्स प्रणाली, एक मॉनिटरिंग एजेंट या किसी प्रकार का भौतिक सेंसर हो सकता है।

इस तरह के विविध डेटा स्रोतों से एकत्र किए गए डेटा को मूल्यांकन के लिए डेटा के एकल मानकीकृत रूप में परिवर्तित करना इस पहली तार्किक परत के डिजाइन और कार्यान्वयन में एक महत्वपूर्ण कार्य है। हालाँकि, यह देखते हुए कि एक घटना एक जोरदार घोषणात्मक ढांचा है, किसी भी सूचनात्मक संचालन को आसानी से लागू किया जा सकता है, इस प्रकार उच्च स्तर के मानकीकरण की आवश्यकता समाप्त हो जाती है।

घटना प्रणाली
यह दूसरी तार्किक परत है। एक घटना प्रणाली एक घटना जेनरेटर से घटना इंजन में एकत्रित की गई जानकारी को प्रसारित करने का एक तंत्र है यासिंको। यह एक टीसीपी/आईपी कनेक्शन, या किसी भी प्रकार की इनपुट फ़ाइल (फ्लैट, एक्सएमएल प्रारूप, ई-मेल, आदि) हो सकता है। एक ही समय में कई घटना प्रणाली खोले जा सकते हैं। सामान्यतः, क्योंकि घटना प्रोसेसिंग इंजन को उन्हें लगभग वास्तविक समय में प्रोसेस करना होता है, घटना प्रणाली एसिंक्रोनस रूप से पढ़े जाएंगे। घटनाओं को एक कतार में संग्रहीत किया जाता है, बाद में घटना प्रोसेसिंग इंजन द्वारा संसाधित किए जाने की प्रतीक्षा की जाती है।

घटना प्रोसेसिंग इंजन
घटना प्रोसेसिंग इंजन एक तार्किक परत है जो किसी घटना की पहचान करने और फिर उचित प्रतिक्रिया का चयन करने और निष्पादित करने के लिए जिम्मेदार है। यह कई दावों को भी ट्रिगर कर सकता है। उदाहरण के लिए, यदि घटना प्रोसेसिंग इंजन में आने वाली घटना स्टॉक में कम उत्पाद आईडी है, तो यह "ऑर्डर उत्पाद आईडी" और "कर्मचारियों को सूचित करें" जैसी प्रतिक्रियाओं को ट्रिगर कर सकती है।

डाउनस्ट्रीम घटना-संचालित गतिविधि
यह तार्किक परत है जहां घटना के परिणाम दिखाए जाते हैं। यह कई अलग-अलग तरीकों और रूपों में किया जा सकता है; उदाहरण के लिए, एक ईमेल किसी को भेजा जाता है और एक एप्लिकेशन स्क्रीन पर किसी प्रकार की चेतावनी प्रदर्शित कर सकता है। सिंक (घटना प्रोसेसिंग इंजन) द्वारा प्रदान किए गए स्वचालन के स्तर के आधार पर डाउनस्ट्रीम गतिविधि की आवश्यकता नहीं हो सकती है।

घटना प्रोसेसिंग स्टाइल्स
घटना प्रोसेसिंग की तीन सामान्य शैलियाँ हैं: सरल, धारा और जटिल। एक परिपक्व घटना-संचालित वास्तुकला में तीन शैलियों का अधिकांशतःएक साथ उपयोग किया जाता है।

सरल घटना प्रसंस्करण
सरल घटना प्रसंस्करण उन घटनाओं से संबंधित है जो स्थिति के विशिष्ट, औसत दर्जे के परिवर्तनों से सीधे संबंधित हैं। साधारण घटना प्रोसेसिंग में, एक उल्लेखनीय घटना घटित होती है जो डाउनस्ट्रीम क्रिया(ओं) को आरंभ करती है। सरल घटना प्रसंस्करण का उपयोग सामान्यतः काम के वास्तविक समय के प्रवाह को चलाने के लिए किया जाता है, जिससे अंतराल समय और लागत कम हो जाती है।

उदाहरण के लिए, टायर के दबाव या परिवेश के तापमान में परिवर्तन का पता लगाने वाले सेंसर द्वारा साधारण घटनाओं का निर्माण किया जा सकता है। कार का टायर गलत दबाव सेंसर से एक साधारण घटना उत्पन्न करेगा जो चालक को टायर की स्थिति के बारे में सलाह देने वाली पीली रोशनी को ट्रिगर करेगा।

घटना स्ट्रीम प्रोसेसिंग
घटना स्ट्रीम प्रोसेसिंग (ईएसपी) में सामान्य और उल्लेखनीय दोनों तरह की घटनाएं होती हैं। सामान्य घटनाओं (आदेशों, आरएफआईडी प्रसारण) को उल्लेखनीयता के लिए जांचा जाता है और सूचना ग्राहकों को प्रवाहित किया जाता है। घटना स्ट्रीम प्रोसेसिंग का उपयोग सामान्यतः उद्यम में और उसके आसपास सूचना के वास्तविक समय के प्रवाह को चलाने के लिए किया जाता है, जो समय पर निर्णय लेने में सक्षम बनाता है।

जटिल घटना प्रसंस्करण
कॉम्प्लेक्स घटना प्रोसेसिंग (सीईपी) सरल और सामान्य घटनाओं के स्वरूपको अनुमान लगाने की अनुमति देता है कि एक जटिल घटना हुई है। जटिल घटना प्रसंस्करण घटनाओं के संगम का मूल्यांकन करता है और फिर कार्रवाई करता है। घटनाएँ (उल्लेखनीय या साधारण) घटना प्रकारों को पार कर सकती हैं और लंबी अवधि में घटित हो सकती हैं। घटना सहसंबंध कारण, लौकिक या स्थानिक हो सकता है। सीईपी में परिष्कृत घटना दुभाषियों, घटना स्वरूपकी परिभाषा और मिलान, और सहसंबंध तकनीकों के रोजगार की आवश्यकता होती है। सीईपी का उपयोग सामान्यतः व्यावसायिक विसंगतियों, खतरों और अवसरों का पता लगाने और उनका जवाब देने के लिए किया जाता है।

ऑनलाइन घटना प्रोसेसिंग
OLEP (OLEP) जटिल घटनाओं को संसाधित करने और लगातार डेटा को प्रबंधित करने के लिए अतुल्यकालिक वितरित घटना-लॉग का उपयोग करता है। ओएलईपी विषम प्रणालियों में एक जटिल परिदृश्य की संबंधित घटनाओं को मज़बूती से बनाने की अनुमति देता है। यह उच्च मापनीयता के साथ बहुत लचीले वितरण स्वरूपको सक्षम बनाता है और सक्षम स्थिरता प्रदान करता है।चूंकि, यह प्रसंस्करण समय के लिए ऊपरी सीमा की गारंटी नहीं दे सकता है।

अत्यधिक ढीला युग्मन और अच्छी तरह से वितरित
एक घटना संचालित वास्तुकला अत्यंत शिथिल युग्मित और अच्छी तरह से वितरित है। इस वास्तुकला का महान वितरण उपस्थित है क्योंकि एक घटना लगभग कुछ भी हो सकती है और लगभग कहीं भी उपस्थित  हो सकती है। वास्तुकला अत्यंत शिथिल युग्मित है क्योंकि घटना स्वयं इसके कारण के परिणामों के बारे में नहीं जानती है। उदा. यदि हमारे पास एक अलार्म प्रणाली है जो सामने का दरवाजा खुलने पर सूचना रिकॉर्ड करता है, तो दरवाजा खुद नहीं जानता है कि दरवाजा खुलने पर अलार्म प्रणाली सूचना जोड़ देगा, बस दरवाजा खोल दिया गया है।

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

जावा स्विंग
जावा (प्रोग्रामिंग भाषा) स्विंग (जावा) एपीआई एक घटना संचालित वास्तुकला पर आधारित है। यह यूजर इंटरफेस से संबंधित घटकों और कार्यक्षमता प्रदान करने के लिए स्विंग के पीछे की प्रेरणा के साथ विशेष रूप से अच्छी तरह से काम करता है। एपीआई एक नामकरण सम्मेलन का उपयोग करता है (उदाहरण के लिए ActionListener और ActionEvent ) घटनाओं की चिंताओं को जोड़ने और व्यवस्थित करने के लिए। एक वर्ग जिसे किसी विशेष घटना के बारे में पता होना चाहिए, बस उपयुक्त श्रोता को लागू करता है, विरासत में मिली विधियों को ओवरराइड करता है, और फिर उस वस्तु में जोड़ा जाता है जो घटना को सक्रिय करता है। एक बहुत ही सरल उदाहरण हो सकता है:

वैकल्पिक रूप से, एक अन्य कार्यान्वयन विकल्प श्रोता को ऑब्जेक्ट में क्लास (कंप्यूटर प्रोग्रामिंग) के रूप में जोड़ना है # अनाम और इस प्रकार लैम्ब्डा नोटेशन (जावा 1.8 के बाद से) का उपयोग करना है। नीचे एक उदाहरण है।

जावास्क्रिप्ट
उपयोग:

वस्तु पास्कल
घटनाएँ ऑब्जेक्ट पास्कल भाषा के मूलभूत तत्वों में से एक हैं। यूनी-कास्ट मॉडल (वन-टू-वन) का उपयोग यहां किया जाता है, यानी प्रेषक केवल एक प्राप्तकर्ता को सूचना भेजता है। इस सीमा का लाभ यह है कि इसके लिए किसी विशेष घटना श्रोता की आवश्यकता नहीं होती है। घटना स्वयं किसी अन्य वस्तु में एक विधि के लिए सूचक है। यदि पॉइंटर खाली नहीं है, तो जब कोई घटना होता है, तो घटना हैंडलर को कॉल किया जाता है। घटनाओं का उपयोग सामान्यतः उन कक्षाओं में किया जाता है जो जीयूआई का समर्थन करते हैं।चूंकि, यह घटनाओं के लिए आवेदन का एकमात्र क्षेत्र नहीं है। निम्नलिखित कोड घटनाओं का उपयोग करने का एक उदाहरण है:

निर्मित वर्ग का उपयोग इस प्रकार किया जा सकता है:

यह भी देखें

 * घटना-संचालित प्रोग्रामिंग
 * प्रक्रिया संचालित संदेश सेवा
 * सेवा उन्मुख संरचना
 * घटना-संचालित एसओए
 * अंतरिक्ष आधारित वास्तुकला
 * जटिल घटना प्रसंस्करण
 * घटना स्ट्रीम प्रोसेसिंग
 * घटना प्रोसेसिंग टेक्निकल सोसायटी
 * मंचित घटना-संचालित वास्तुकला (Sईडीए)
 * रिएक्टर पैटर्न
 * स्वायत्त परिधीय संचालन

लेख

 * ईडीए और एसओए के बीच अंतर को परिभाषित करने वाला लेख: ईडीए एसओए का विस्तार कैसे करता है और क्यों यह महत्वपूर्ण है जैक वैन हूफ द्वारा।
 * किसी एसओए में बहने वाली व्यावसायिक घटनाओं का वास्तविक-विश्व उदाहरण: एसओए, ईडीए, और CEP - एक विजेता कॉम्बो उदी दहन द्वारा।
 * घटना डेटा की अवधारणा का वर्णन करने वाला लेख: हैकर्स के लिए घटना-डेटा एनालिटिक्स, मिशेल वेटज़लर द्वारा घटना डेटा के बारे में कैसे सोचें। (वेब संग्रह)

बाहरी संबंध

 * Event-Driven Applications: Costs, Benefits and Design Approaches
 * 5th Anniversary Edition: Event-Driven Architecture Overview, Brenda M. Michelson
 * Complex Event Processing and Service Oriented Architecture