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

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

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

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

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

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

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

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

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

सी # (प्रोग्रामिंग लैंग्वेज) विशेष प्रतिनिधियों के रूप में घटनाओं का उपयोग करता है जिसे केवल उस वर्ग द्वारा निकाल दिया जा सकता है जो इसे घोषित करता है। यह उन्नत रूप से कंप्यूटर विज्ञान में अनुमति देता है, उदाहरण के लिए: delegate void Notifier (string sender);

class Model

{

public event Notifier notifyViews;

public void Change { ... notifyViews("Model");

}

}

class View1

{

public View1(Model model)

{

model.notifyViews += new Notifier(this.Update1);

}

void Update1(string sender)

{

Console.WriteLine($"{sender} was changed during update");

}

}

class View2

{

public View2(Model model)

{

model.notifyViews += new Notifier(this.Update2);

}

void Update2(string sender)

{

Console.WriteLine($"{sender} was changed");

}

}

class Test

{

static void Main

{

Model model = new Model;

new View1(model);

new View2(model);

model.Change;

}

}

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

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

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

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

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

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

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

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

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

जोस्टिक इवेंट्स
जॉयस्टिक को हिलाने से 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