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