2009-11-02 17 views
34

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

इसके अलावा यह स्पष्ट है कि मैसेजिंग प्रकाशित करें/सदस्यता लें, sychronous या अतुल्यकालिक संचार के आधार पर सिस्टम का समर्थन करता, लेन-देन आदि

लेकिन वहाँ मिडलवेयर/एसओए/आवेदन एकीकरण के संदर्भ में एक अंतर है? (वास्तुकला स्तर)। मैं ऐसे विकिपीडिया (here, और here) स्रोतों से परामर्श करने की कोशिश कर रहा हूं, लेकिन मैं अभी भी कुछ उलझन में हूं। एक डेवलपर को दूसरे पर एक समाधान पसंद करना चाहिए?

क्या ऐसे उदाहरण या मामले हैं जहां एक दृष्टिकोण दूसरे की तुलना में अधिक समझ में आता है? या किसी भी व्यापक संसाधन और गाइड प्रत्येक को लागू करने के लिए?

किसी भी अंतर्दृष्टि के लिए बहुत धन्यवाद।

उत्तर

15

"कोई स्पष्ट भेद है" का संक्षिप्त उत्तर "नहीं" होगा।

शर्तें काफी अंतर-परिवर्तनीय नहीं हैं, लेकिन समान बुनियादी वास्तुकला का अर्थ है - विशेष रूप से आप घटनाओं या संदेशों से ट्रिगर करेंगे।

आपके द्वारा संदर्भित पहला लेख निम्न स्तर की नलसाजी, एमओएम या पब-सब "बस" के बारे में है जो आपकी ओर से संदेशों को स्थानांतरित करता है। घटना-संचालित वास्तुकला वह है जो आप उस ढांचे के शीर्ष पर बनाते हैं।

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

7

घटनाक्रम संचालित आर्किटेक्चर मैसेजिंग के साथ या बिना लागू किए जा सकते हैं। मैसेजिंग उपभोक्ताओं को विश्वसनीय, गारंटीकृत तरीके से उठाए गए कार्यक्रमों को संवाद करने का एक तरीका है। विशेष रूप से जब निर्माता और उपभोक्ता वास्तव में decoupled हैं और विभिन्न सर्वर/वीएम/वातावरण पर होस्ट किया जा सकता है और किसी भी साझा स्मृति के लिए सीधे पहुंच नहीं है।

हालांकि विशिष्ट मामलों में - जब ईवेंट का उपभोक्ता एक ही एप्लीकेशन के भीतर पंजीकृत एक फ़ंक्शन/कॉलबैक होता है, या जब उपभोक्ता को सिंक्रनाइज़ेशन निष्पादित करने की आवश्यकता होती है, तो ईवेंट-सदस्यता को संदेश के बिना कार्यान्वित किया जा सकता है।

2

जैसा कि इसे this आलेख में अच्छी तरह से रखा गया है, इवेंट संचालित डिज़ाइन को समझने के लिए, यह प्रस्तुत करने के बजाय हमें यह देखना है कि यह क्या छुपाता है और यह प्रोग्रामिंग के बहुत बुनियादी से अधिक कुछ नहीं है; "कॉल स्टैक"।

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

कॉल स्टैक पर्यावरण में हालांकि, न केवल कॉलर को पता होना चाहिए कि आगे क्या होता है लेकिन इसे एक विधि नाम में कार्यक्षमता को जोड़ने में सक्षम होना चाहिए।

डिफ़ॉल्ट रूप से संदेश उन्मुख अनुप्रयोग साझा स्मृति को हटाने के साथ आते हैं। प्रकाशक और ग्राहक को मेमोरी स्पेस साझा करने की आवश्यकता नहीं है।दूसरी ओर, अन्य सभी विशेषताओं (यानी आदेश, विधि नाम युग्मन और ऐसी) आवश्यकता नहीं है।

यदि संदेश पासिंग घटना संचालित आर्किटेक्चर के सिद्धांतों का अनुपालन करने के लिए डिज़ाइन किया गया है, तो उन्हें समान माना जा सकता है। अन्यथा उनके बीच एक बड़ा अंतर है।

0

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

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

30

जोनास बोनेर के प्रश्न पर एक Typesafe/Reactive बिंदु देखें। this blog post के तीसरे पैरा से: "अंतर किया जा रहा है कि संदेशों निर्देश दिया जाता है, घटनाओं नहीं हैं - संदेश एक स्पष्ट पता प्राप्तकर्ता जबकि एक घटना सिर्फ दूसरों (0-एन) यह निरीक्षण करने के लिए के लिए होता है।"

+0

यह भी प्रत्यक्ष शब्द पर जोर देना लायक है क्योंकि हम 0 एन पता प्राप्तकर्ताओं के बीच संदेश प्रसारित कर सकते हैं। – 4lex1v

0

इवेंट संचालित वास्तुकला और संदेश संचालित वास्तुकला दो अलग-अलग चीजें हैं और दो अलग-अलग समस्याएं हल करती हैं।

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

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

संदेश प्रेरित वास्तुकला फोकस उन्मुखी मिडिलवेयर मानक संदेश का उपयोग कर प्रणाली का एक और मॉड्यूल के लिए एक मॉड्यूल से संदेशों को पारित करके वितरण प्रणाली को एकीकृत करने की है।

14

इस प्रश्न को बहुत समय पहले पूछा गया था। मुझे लगता है कि एक और अधिक आधुनिक और स्पष्ट प्रतिक्रिया Message-Driven (in contrast to Event-Driven) में Reactive Manifesto द्वारा दिया जाता है:

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

संबंधित मुद्दे