मैसेजिंग पैटर्न

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

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

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

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

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

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

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

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

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

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

सोप
शब्द मैसेज एक्सचेंज पैटर्न का 'सिंपल ऑब्जेक्ट एक्सेस प्रोटोकॉल' (SOAP) के भीतर एक विस्तारित अर्थ है। सोप एमईपी प्रकार में शामिल हैं:
 * 1) इन-ओनली: यह वन-वे के बराबर है। एक मानक वन-वे मैसेजिंग एक्सचेंज जहां उपभोक्ता प्रदाता को एक संदेश भेजता है जो किसी भी प्रकार की प्रतिक्रिया नहीं भेजता है।
 * 2) Robust-In-only: यह पैटर्न विश्वसनीय एकतरफा संदेश आदान-प्रदान के लिए है। उपभोक्ता एक संदेश के साथ आरंभ करता है, जिस पर प्रदाता स्थिति के साथ प्रतिक्रिया करता है। यदि प्रतिक्रिया एक स्थिति है, तो विनिमय पूर्ण है, लेकिन यदि प्रतिक्रिया एक गलती है, तो उपभोक्ता को एक स्थिति के साथ प्रतिक्रिया देनी चाहिए।
 * 3) इन-आउट: यह आवेदन-प्रतिक्रिया के बराबर है। एक मानक दो-तरफ़ा मैसेज एक्सचेंज जहां उपभोक्ता एक संदेश के साथ आरंभ करता है, प्रदाता एक संदेश या गलती के साथ प्रतिक्रिया करता है और उपभोक्ता एक स्थिति के साथ प्रतिक्रिया करता है।
 * 4) इन-ऑप्शनल-आउट: एक मानक टू-वे मैसेज एक्सचेंज जहां प्रदाता की प्रतिक्रिया वैकल्पिक होती है।
 * 5) आउट-ओनली: इन-ओनली का उल्टा। यह मुख्य रूप से ईवेंट अधिसूचना का समर्थन करता है। यह एक गलती संदेश ट्रिगर नहीं कर सकता।
 * 6) Robust Out-only: आउट-ओनली पैटर्न के समान, सिवाय इसके कि यह एक गलती संदेश को ट्रिगर कर सकता है। आउटबाउंड संदेश संचरण आरंभ करता है।
 * 7) आउट-इन: इन-आउट का उल्टा। प्रदाता आवेदन को प्रसारित करता है और विनिमय आरंभ करता है।
 * 8) आउट-ऑप्शनल-इन: इन-ऑप्शनल-आउट का उल्टा। सेवा एक आउटबाउंड संदेश उत्पन्न करती है। आने वाला संदेश वैकल्पिक है (वैकल्पिक-इन)।

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

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

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

REST प्रोटोकॉल का एक और बढ़िया गुण यह है कि यह इसके शीर्ष पर अन्य प्रोटोकॉल शब्दार्थों का निर्माण करने के लिए उपयुक्त है, जो कि HATEOAS के साथ उदाहरण है।

यह भी देखें

 * धक्का प्रौद्योगिकी
 * वितरित डेटा प्रवाह
 * उद्यम एकीकरण पैटर्न

बाहरी संबंध

 * Messaging Patterns in Service-Oriented Architecture
 * Enterprise Integration Patterns - Pattern Catalog