घटना (कंप्यूटिंग)

कंप्यूटर प्रोग्रामिंग और  सॉफ्टवेर डिज़ाइन  में, एक घटना सॉफ़्टवेयर द्वारा मान्यता प्राप्त एक क्रिया या घटना है, जो अक्सर बाहरी वातावरण से एसिंक्रोनस I/O उत्पन्न करती है, जो सॉफ़्टवेयर द्वारा  आयोजन प्रबंधकर्ता  हो सकती है। कंप्यूटर ईवेंट को सिस्टम द्वारा,  उपयोगकर्ता (कंप्यूटिंग), या अन्य तरीकों से उत्पन्न या ट्रिगर किया जा सकता है। आमतौर पर, घटनाओं को नियंत्रण प्रवाह के साथ  तादात्म्य  द्वारा नियंत्रित किया जाता है; अर्थात्, सॉफ़्टवेयर में एक या अधिक समर्पित स्थान हो सकते हैं जहाँ घटनाओं को नियंत्रित किया जाता है, अक्सर एक ईवेंट लूप।

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

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

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

घटनाओं को आम तौर पर उपयोगकर्ता इंटरफेस में उपयोग किया जाता है, जहां बाहरी दुनिया में क्रियाएं (माउस क्लिक, विंडो-आकार बदलना, कीबोर्ड प्रेस, अन्य कार्यक्रमों से संदेश आदि) को घटनाओं की एक श्रृंखला के रूप में कार्यक्रम द्वारा नियंत्रित किया जाता है। कई विंडोिंग परिवेशों के लिए लिखे गए प्रोग्राम में मुख्य रूप से इवेंट हैंडलर होते हैं।

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

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

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

सी शार्प (प्रोग्रामिंग लैंग्वेज) | सी # विशेष प्रतिनिधियों के रूप में घटनाओं का उपयोग करता है जिसे केवल उस वर्ग द्वारा निकाल दिया जा सकता है जो इसे घोषित करता है। यह बेहतर अमूर्तता (कंप्यूटर विज्ञान) की अनुमति देता है, उदाहरण के लिए: <वाक्यविन्यास प्रकाश लैंग = csharp> प्रतिनिधि शून्य नोटिफ़ायर (स्ट्रिंग प्रेषक);

वर्ग मॉडल {   सार्वजनिक घटना सूचक अधिसूचना दृश्य; सार्वजनिक शून्य परिवर्तन {... सूचित दृश्य (मॉडल); } }

क्लास व्यू1 {   सार्वजनिक दृश्य 1 (मॉडल मॉडल) {       model.notifyViews += new Notifier(this.Update1); }

शून्य अपडेट 1 (स्ट्रिंग प्रेषक) {       कंसोल.राइटलाइन ($ {प्रेषक} को अपडेट के दौरान बदल दिया गया था); } }

क्लास व्यू 2 {   सार्वजनिक दृश्य 2 (मॉडल मॉडल) {       model.notifyViews += new Notifier(this.Update2); }

शून्य अपडेट 2 (स्ट्रिंग प्रेषक) {       कंसोल.राइटलाइन ($ {प्रेषक} बदल दिया गया था); } }

वर्ग परीक्षण {   स्थिर शून्य मुख्य {       मॉडल मॉडल = नया मॉडल ;

नया व्यू 1 (मॉडल); नया व्यू 2 (मॉडल); मॉडल.चेंज ; } } 

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

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

निर्मित घटनाओं को पहले एक घटना प्रेषक द्वारा ढांचे के भीतर संसाधित किया जाता है। यह आम तौर पर ईवेंट और ईवेंट हैंडलर्स के बीच संबंधों का प्रबंधन करता है, और बाद के प्रसंस्करण के लिए ईवेंट हैंडलर्स या इवेंट्स को क्यू कर सकता है। ईवेंट डिस्पैचर ईवेंट हैंडलर्स को सीधे कॉल कर सकते हैं, या हैंडलर के निष्पादन के बारे में जानकारी के साथ इवेंट्स के समाप्त होने की प्रतीक्षा कर सकते हैं।

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

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

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

उपयोगकर्ता-जनित घटनाएँ
बड़ी संख्या में ऐसी स्थितियाँ या घटनाएँ हैं जो एक प्रोग्राम या सिस्टम उत्पन्न या प्रतिक्रिया कर सकता है। कुछ सामान्य उपयोगकर्ता जनित घटनाओं में शामिल हैं:

माउस घटनाएँ
एक संकेत यंत्र  कई सॉफ़्टवेयर पहचानने योग्य  पॉइंटिंग डिवाइस जेस्चर  उत्पन्न कर सकता है। एक माउस कई माउस ईवेंट उत्पन्न कर सकता है, जैसे कि माउस मूव (चाल और दूरी की दिशा सहित), माउस लेफ्ट/राइट बटन अप/डाउन और  पहिया घुमाएं  गति, या इन इशारों का एक संयोजन। उदाहरण के लिए,  डबल क्लिक करें  आमतौर पर सीमा के भीतर शब्दों और वर्णों का चयन करते हैं, और पूरे पैराग्राफ पर  ट्रिपल क्लिक  करते हैं।

कीबोर्ड इवेंट्स
कीबोर्ड पर एक कुंजी या कुंजियों के संयोजन को दबाने से एक कीबोर्ड ईवेंट उत्पन्न होता है, जो वर्तमान में चल रहे प्रोग्राम को पेश किए गए डेटा का जवाब देने में सक्षम बनाता है जैसे कि उपयोगकर्ता ने कौन सी कुंजी दबाई है।

जोस्टिक इवेंट्स
जॉयस्टिक को हिलाने से XY एनालॉग सिग्नल उत्पन्न होता है। घटनाओं को ट्रिगर करने के लिए उनके पास अक्सर कई बटन होते हैं। लोकप्रिय गेम बॉक्स के लिए कुछ गेमपैड  जॉयस्टिक का उपयोग करते हैं।

टच स्क्रीन इवेंट
टचस्क्रीन का उपयोग करके उत्पन्न होने वाली घटनाओं को आमतौर पर स्पर्श घटना ्स या  संकेत पहचान  के रूप में संदर्भित किया जाता है।

डिवाइस इवेंट्स
डिवाइस इवेंट में किसी डिवाइस द्वारा या उस पर की जाने वाली कार्रवाई शामिल होती है, जैसे कि हिलाना, झुकाना, घुमाना, हिलना आदि।

यह भी देखें

 * कॉलबैक (कंप्यूटर प्रोग्रामिंग)
 * डेटाबेस ट्रिगर
 * डोम इवेंट्स
 * इवेंट-संचालित प्रोग्रामिंग
 * एक्सेप्शन हेंडलिंग
 * इंटरप्ट हैंडलर
 * व्यवधान
 * ऑब्जर्वर पैटर्न (जैसे, इवेंट श्रोता)
 * रिएक्टर पैटर्न बनाम  प्रॉक्टर पैटर्न
 * सिग्नल प्रोग्रामिंग
 * आभासी तुल्यकालन

बाहरी कड़ियाँ

 * Article Event Handlers and Callback Functions
 * A High Level Design of the Sub-Farm Event Handler
 * An Events Syntax for XML
 * Distributed Events and Notifications
 * Event order
 * Javadoc documentation
 * Java package Javadoc API documentation
 * Java package Javadoc API documentation
 * Write an Event Handler