संदेश-उन्मुख मध्यस्थ

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

मिडलवेयर श्रेणियां

 * सुदूर प्रणाली संदेश या आरपीसी-आधारित मिडलवेयर
 * ऑब्जेक्ट अनुरोध ब्रोकर या ओआरबी-आधारित मिडलवेयर
 * संदेश उन्मुख मिडलवेयर या एमओएम-आधारित मिडलवेयर

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

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

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

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

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

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

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

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

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

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

मानक
ऐतिहासिक रूप से, संदेश-उन्मुख मिडलवेयर के उपयोग को नियंत्रित करने वाले मानकीकरण की कमी थी जिससे समस्याएँ उत्पन्न हुई हैं। अधिकांश प्रमुख विक्रेताओं के अपने स्वयं के कार्यान्वयन हैं, प्रत्येक का अपना अप्लिकेशन प्रोग्रामिंग अंतरफलक (एपीआई) और प्रबंधन उपकरण हैं।

संदेश उन्मुख मिडलवेयर के लिए लंबे समय से चलने वाले मानकों में से एक एक्स/ओपन समूह का एक्सएटीएमआई विनिर्देश (वितरित लेनदेन प्रसंस्करण: एक्सएटीएमआई विशिष्टता) है जो इंटरप्रोसेस संचार के लिए एपीआई को मानकीकृत करता है। इस एपीआई के लिए ज्ञात कार्यान्वयन एटीआर बाल्टिक का एंड्यूरो/एक्स मिडलवेयर और ओरेकल कॉर्पोरेशन का टक्सीडो (सॉफ्टवेयर)  है।

उन्नत संदेश कतारबद्ध प्रोटोकॉल (AMQP) एक स्वीकृत OASIS (संगठन) है और आईएसओ मानक जो भाग लेने वाले अनुप्रयोग घटकों के बीच उपयोग किए जाने वाले प्रोटोकॉल और प्रारूपों को परिभाषित करता है, इसलिए कार्यान्वयन इंटरऑपरेबल हैं। AMQP का उपयोग लचीली रूटिंग योजनाओं के साथ किया जा सकता है, जिसमें पॉइंट-टू-पॉइंट (दूरसंचार) | पॉइंट-टू-पॉइंट, फैन-आउट (सॉफ़्टवेयर) | फैन-आउट, प्रकाशित/सदस्यता, और अनुरोध-प्रतिक्रिया जैसे सामान्य संदेश पैटर्न शामिल हैं। कि इन्हें जानबूझकर प्रोटोकॉल मानक के v1.0 से हटा दिया गया है, लेकिन रूटिंग के लिए विशेष कार्यान्वयन और/या अंतर्निहित नेटवर्क प्रोटोकॉल पर भरोसा करते हैं)। यह लेन-देन प्रबंधन, कतारबद्ध, वितरण, सुरक्षा, प्रबंधन, क्लस्टरिंग, संघ और विषम बहु-मंच समर्थन का भी समर्थन करता है। AMQP का उपयोग करने वाले जावा एप्लिकेशन आमतौर पर Java JMS में लिखे जाते हैं। अन्य कार्यान्वयन सी #, सी ++, पीएचपी, पायथन, रूबी और अन्य भाषाओं के लिए एपीआई प्रदान करते हैं।

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

एमक्यू टेलीमेट्री ट्रांसपोर्ट (MQTT) OASIS संगठन द्वारा समर्थित एक ISO मानक (ISO/IEC PRF 20922) है। यह M2M/IoT संदर्भों में संचार के लिए उपयुक्त TCP/IP के शीर्ष पर एक हल्का प्रकाशित/सदस्यता विश्वसनीय संदेश परिवहन प्रोटोकॉल प्रदान करता है जहां एक छोटे कोड पदचिह्न की आवश्यकता होती है और/या नेटवर्क बैंडविड्थ प्रीमियम पर होता है।

वस्तु प्रबंधन समूह की डेटा वितरण सेवा | डेटा वितरण सेवा (डीडीएस) संदेश-उन्मुख प्रकाशन-सदस्यता पैटर्न प्रदान करता है। प्रकाशित/सदस्यता (पी/एस) मिडलवेयर मानक प्रदान करता है जिसका उद्देश्य स्केलेबल, रीयल-टाइम, भरोसेमंद, उच्च प्रदर्शन और प्रकाशकों और ग्राहकों के बीच इंटरऑपरेबल डेटा एक्सचेंजों को सक्षम करना है। मानक C++, C++11, C, Ada, Java और Ruby को इंटरफेस प्रदान करता है।

एक्स्टेंसिबल मैसेजिंग एंड प्रेजेंस प्रोटोकॉल (एक्सएमपीपी) एक्सएमएल (एक्सटेंसिबल मार्कअप लैंग्वेज) पर आधारित संदेश-उन्मुख मिडलवेयर के लिए एक संचार प्रोटोकॉल है। एक्स्टेंसिबल होने के लिए डिज़ाइन किया गया, प्रोटोकॉल का उपयोग पब्लिश-सब्सक्राइब सिस्टम, वीओआईपी के लिए सिग्नलिंग, वीडियो, फाइल ट्रांसफर, गेमिंग, इंटरनेट ऑफ थिंग्स एप्लिकेशन जैसे स्मार्ट ग्रिड और सोशल नेटवर्किंग सेवाओं के लिए भी किया गया है। अधिकांश इंस्टेंट मैसेजिंग प्रोटोकॉल के विपरीत, XMPP को एक खुले मानक में परिभाषित किया गया है और यह विकास और अनुप्रयोग के एक खुले सिस्टम दृष्टिकोण का उपयोग करता है, जिसके द्वारा कोई भी XMPP सेवा को लागू कर सकता है और अन्य संगठनों के कार्यान्वयन के साथ इंटरऑपरेट कर सकता है। क्योंकि XMPP एक खुला प्रोटोकॉल है, कार्यान्वयन किसी भी सॉफ़्टवेयर लाइसेंस का उपयोग करके विकसित किया जा सकता है; हालांकि कई सर्वर, क्लाइंट और लाइब्रेरी कार्यान्वयन मुफ्त और ओपन-सोर्स सॉफ़्टवेयर के रूप में वितरित किए जाते हैं, कई फ्रीवेयर और मालिकाना सॉफ़्टवेयर कार्यान्वयन भी मौजूद हैं। इंटरनेट इंजीनियरिंग टास्क फोर्स (IETF) ने 2002 में एक IETF इंस्टेंट मैसेजिंग और उपस्थिति तकनीक के रूप में कोर प्रोटोकॉल को औपचारिक रूप देने के लिए एक XMPP वर्किंग ग्रुप का गठन किया। XMPP वर्किंग ग्रुप ने चार विनिर्देशों (RFC 3920, RFC 3921, RFC 3922, RFC 3923) का निर्माण किया, जिन्हें 2004 में प्रस्तावित मानकों के रूप में अनुमोदित किया गया था। 2011 में, RFC 3920 और RFC 3921 को क्रमशः RFC 6120 और RFC 6121 द्वारा RFC के साथ स्थानांतरित कर दिया गया था। 6122 XMPP एड्रेस फॉर्मेट को निर्दिष्ट करता है। IETF में मानकीकृत इन कोर प्रोटोकॉल के अलावा, XMPP Standards Foundation (पूर्व में Jabber Software Foundation) खुले XMPP एक्सटेंशन को विकसित करने में सक्रिय है। XMPP-आधारित सॉफ़्टवेयर, XMPP Standards Foundation के अनुसार, इंटरनेट पर व्यापक रूप से तैनात किया गया है, और रक्षा विभाग (DoD) की एकीकृत क्षमताओं की रूपरेखा के लिए आधार बनाता है। चल देना ई प्रोग्रामिंग वातावरण जावा संदेश सेवा (जावा संदेश सेवा) नामक एक मानक एपीआई प्रदान करता है, जिसे अधिकांश एमओएम विक्रेताओं द्वारा कार्यान्वित किया जाता है और इसका उद्देश्य विशेष एमओएम एपीआई कार्यान्वयन को छिपाना है; हालाँकि, JMS संदेशों के आदान-प्रदान के प्रारूप को परिभाषित नहीं करता है, इसलिए JMS सिस्टम इंटरऑपरेबल नहीं हैं।

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

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

रुझान

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

यह भी देखें

 * उद्यम एकीकरण पैटर्न (पुस्तक)
 * एंटरप्राइज़ मैसेजिंग सिस्टम
 * उद्यम सेवा बस
 * प्रवाह आधारित प्रोग्रामिंग