संदेश प्रेषण: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Technique for running a program on a computer without directly calling it}}
{{Short description|Technique for running a program on a computer without directly calling it}}
यह लेख कंप्यूटर विज्ञान की अवधारणा के बारे में है। अन्य उपयोगों के लिए, संदेश प्रेषण (बहुविकल्पी) देखें।
''यह लेख कंप्यूटर विज्ञान की अवधारणा के बारे में है। अन्य उपयोगों के लिए, संदेश प्रेषण (बहुविकल्पी) देखें।''


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


संदेश प्रेषण आधुनिक कंप्यूटर [[ सॉफ़्टवेयर | सॉफ़्टवेयर]] में सर्वव्यापी है।{{Citation needed|date=April 2021}} इसका उपयोग उन वस्तुओं के लिए एक तरीके से किया जाता है जो एक दूसरे के साथ कार्य करने के लिए एक कार्यक्रम बनाते हैं और पारस्परिक क्रिया करने के लिए विभिन्न कंप्यूटरों (जैसे, [[इंटरनेट]]) पर सक्रिय होने वाली वस्तुओं और प्रणालियों के लिए एक साधन के रूप में उपयोग किया जाता है। संदेश प्रेषण को चैनलों (प्रोग्रामिंग) सहित विभिन्न तंत्रों द्वारा कार्यान्वित किया जा सकता है।
संदेश प्रेषण आधुनिक कंप्यूटर [[ सॉफ़्टवेयर |सॉफ़्टवेयर]] में सर्वव्यापी है।{{Citation needed|date=April 2021}} इसका उपयोग उन वस्तुओं के लिए एक तरीके से किया जाता है जो एक दूसरे के साथ कार्य करने के लिए एक कार्यक्रम बनाते हैं और पारस्परिक क्रिया करने के लिए विभिन्न कंप्यूटरों (जैसे, [[इंटरनेट]]) पर सक्रिय होने वाली वस्तुओं और प्रणालियों के लिए एक साधन के रूप में उपयोग किया जाता है। संदेश प्रेषण को चैनलों (प्रोग्रामिंग) सहित विभिन्न तंत्रों द्वारा कार्यान्वित किया जा सकता है।


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


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


इसका उपयोग कैसे किया जा सकता है, इसका पहला उदाहरण कंप्यूटर ग्राफिक्स के डोमेन में था। ग्राफिक वस्तुओं में कुशलतापूर्वक उपयोग करने में विभिन्न जटिलताएं सम्मिलित हैं। उदाहरण के लिए, किसी संलग्न आकृति के क्षेत्रफल की गणना करने के लिए केवल सही सूत्र का उपयोग करना इस आधार पर अलग-अलग होगा कि आकृति त्रिभुज, आयत, दीर्घवृत्त, या वृत्त है। पारंपरिक कंप्यूटर प्रोग्रामिंग में इसका परिणाम लंबे IF-THEN स्टेटमेंट्स के परीक्षण के रूप में होता है जो यह परीक्षण करते हैं कि आकृति किस प्रकार के वस्तु की थी और उपयुक्त कोड को कॉल कर रही थी। इसे नियंत्रण करने का वस्तु-उन्मुख तरीका <code>Shape</code> जैसे नामक एक वर्ग को उपवर्गों जैसे कि <code>Rectangle</code> और <code>Ellipse</code> (जो बदले में <code>Square</code> और <code>Circle</code>के उपवर्ग हैं) और फिर किसी भी <code>Shape</code> को एक संदेश भेजना है जो इसे अपने क्षेत्र की गणना करने के लिए कह रहा है। प्रत्येक <code>Shape</code> वस्तु तब उपवर्ग की विधि को उस प्रकार की वस्तु के लिए उपयुक्त सूत्र के साथ प्रयुक्त करेगी।<ref>{{cite book|last=Goldberg|first=Adele|title=Smalltalk-80 The Language|year=1989|publisher=Addison Wesley|isbn=0-201-13688-0|pages=5–16|author2=David Robson}}</ref>
इसका उपयोग कैसे किया जा सकता है, इसका पहला उदाहरण कंप्यूटर ग्राफिक्स के डोमेन में था। ग्राफिक वस्तुओं में कुशलतापूर्वक उपयोग करने में विभिन्न जटिलताएं सम्मिलित हैं। उदाहरण के लिए, किसी संलग्न आकृति के क्षेत्रफल की गणना करने के लिए केवल सही सूत्र का उपयोग करना इस आधार पर अलग-अलग होगा कि आकृति त्रिभुज, आयत, दीर्घवृत्त, या वृत्त है। पारंपरिक कंप्यूटर प्रोग्रामिंग में इसका परिणाम लंबे IF-THEN स्टेटमेंट्स के परीक्षण के रूप में होता है जो यह परीक्षण करते हैं कि आकृति किस प्रकार के वस्तु की थी और उपयुक्त कोड को कॉल कर रही थी। इसे नियंत्रण करने का वस्तु-उन्मुख तरीका <code>Shape</code> जैसे नामक एक वर्ग को उपवर्गों जैसे कि <code>Rectangle</code> और <code>Ellipse</code> (जो बदले में <code>Square</code> और <code>Circle</code>के उपवर्ग हैं) और फिर किसी भी <code>Shape</code> को एक संदेश प्रेषित करना है जो इसे अपने क्षेत्र की गणना करने के लिए कह रहा है। प्रत्येक <code>Shape</code> वस्तु तब उपवर्ग की विधि को उस प्रकार की वस्तु के लिए उपयुक्त सूत्र के साथ प्रयुक्त करेगी।<ref>{{cite book|last=Goldberg|first=Adele|title=Smalltalk-80 The Language|year=1989|publisher=Addison Wesley|isbn=0-201-13688-0|pages=5–16|author2=David Robson}}</ref>


डिस्ट्रीब्यूटेड (डिस्ट्रीब्यूटेड) संदेश प्रेषण विकासक को संरचना की एक स्तर प्रदान करता है जो उप-प्रणालियों से बने प्रणाली बनाने के लिए सामान्य सेवाएं प्रदान करता है जो विभिन्न स्थानों पर और अलग-अलग समय पर असमान कंप्यूटरों पर सक्रिय होते हैं। जब कोई डिस्ट्रीब्यूटेड ऑब्जेक्ट एक संदेश प्रेषित कर रहा है, तो संदेश स्तर ऐसे समस्या का ध्यान रख सकता है जैसे:
डिस्ट्रीब्यूटेड संदेश प्रेषण विकासक को संरचना की एक स्तर प्रदान करता है जो उप-प्रणालियों से बने प्रणाली बनाने के लिए सामान्य सेवाएं प्रदान करता है जो विभिन्न स्थानों पर और अलग-अलग समय पर असमान कंप्यूटरों पर सक्रिय होते हैं। जब कोई डिस्ट्रीब्यूटेड ऑब्जेक्ट एक संदेश प्रेषित कर रहा है, तो संदेश स्तर ऐसे समस्या का ध्यान रख सकता है जैसे:
* विभिन्न स्थानों पर विभिन्न ऑपरेटिंग सिस्टम और प्रोग्रामिंग भाषाओं का उपयोग करके प्रक्रिया का पता लगाना, जहां से संदेश की उत्पत्ति हुई थी।
* विभिन्न स्थानों पर विभिन्न ऑपरेटिंग प्रणाली और प्रोग्रामिंग भाषाओं का उपयोग करके प्रक्रिया का पता लगाना, जहां से संदेश की उत्पत्ति हुई थी।
* संदेश को क्यू में रोकना यदि संदेश को नियंत्रण करने के लिए उपयुक्त ऑब्जेक्ट वर्तमान में नहीं संचलित है और फिर ऑब्जेक्ट उपलब्ध होने पर संदेश को इनवॉक कर रहा है। इसके अतिरिक्त, यदि आवश्यक हो तो परिणाम को संग्रहीत करना जब तक प्रेषित करने वाली वस्तु इसे प्राप्त करने के लिए तैयार न हो जाए।
* संदेश को क्यू में रोकना यदि संदेश को नियंत्रण करने के लिए उपयुक्त ऑब्जेक्ट वर्तमान में नहीं संचलित है और फिर ऑब्जेक्ट उपलब्ध होने पर संदेश को इनवॉक कर रहा है। इसके अतिरिक्त, यदि आवश्यक हो तो परिणाम को संग्रहीत करना जब तक प्रेषित करने वाली वस्तु इसे प्राप्त करने के लिए तैयार न हो जाए।
* डिस्ट्रीब्यूटेड ट्रांसेक्शन (संचालन) के लिए विभिन्न संचालन आवश्यकताओं को नियंत्रित करना, उदाहरण [[ परमाणु (डेटाबेस प्रणाली) | परमाणुता, (डेटाबेस प्रणाली)]] , संगति (डेटाबेस प्रणाली), आइसोलेशन (डेटाबेस प्रणाली), स्थायित्व[[एसिड|(एसीआईडी]]), डेटा का परीक्षण सम्मिलित है।<ref>{{cite book|last=Orfali|first=Robert|title=The Essential Client/Server Survival Guide|year=1996|publisher=Wiley Computer Publishing|location=New York|isbn=0-471-15325-7|pages=[https://archive.org/details/essentialclients00orfa/page/1 1–22]|url=https://archive.org/details/essentialclients00orfa/page/1}}</ref>
* डिस्ट्रीब्यूटेड ट्रांसेक्शन (संचालन) के लिए विभिन्न संचालन आवश्यकताओं को नियंत्रित करना, उदाहरण [[ परमाणु (डेटाबेस प्रणाली) |परमाणुता, (डेटाबेस प्रणाली)]], संगति (डेटाबेस प्रणाली), आइसोलेशन (डेटाबेस प्रणाली), स्थायित्व[[एसिड|(एसीआईडी]]), डेटा का परीक्षण सम्मिलित है।<ref>{{cite book|last=Orfali|first=Robert|title=The Essential Client/Server Survival Guide|year=1996|publisher=Wiley Computer Publishing|location=New York|isbn=0-471-15325-7|pages=[https://archive.org/details/essentialclients00orfa/page/1 1–22]|url=https://archive.org/details/essentialclients00orfa/page/1}}</ref>




Line 23: Line 23:


=== सिंक्रोनस संदेश प्रेषण ===
=== सिंक्रोनस संदेश प्रेषण ===
समान समय में चलने वाली वस्तुओं के बीच सिंक्रोनस संदेश प्रेषण होता है। इसका उपयोग वस्तु-उन्मुख प्रोग्रामिंग भाषाओं जैसे कि [[ जावा (प्रोग्रामिंग भाषा) ]] और स्मॉलटॉक द्वारा किया जाता है।
समान समय में संचलित होने वाली वस्तुओं के बीच सिंक्रोनस संदेश प्रेषण होता है। इसका उपयोग वस्तु-उन्मुख प्रोग्रामिंग भाषाओं जैसे कि [[ जावा (प्रोग्रामिंग भाषा) |जावा (प्रोग्रामिंग भाषा)]] और स्मॉलटॉक द्वारा किया जाता है।


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


100 डेस्कटॉप कंप्यूटर वाले एक व्यस्त व्यावसायिक कार्यालय की कल्पना करें जो विशेष रूप से प्रेषित होने वाले सिंक्रोनस संदेश का उपयोग करके एक दूसरे को ईमेल प्रेषित करते हैं। कार्यकर्ता अपने कंप्यूटर को बंद करने से अन्य 99 कंप्यूटरों को फ्रीज करने का कारण बन सकता है जब तक कि कार्यकर्ता अपने कंप्यूटर को समान ईमेल को संसाधित करने के लिए वापस प्रारंभ नहीं करता है।
100 डेस्कटॉप कंप्यूटर वाले एक व्यस्त व्यावसायिक कार्यालय की कल्पना करें जो विशेष रूप से प्रेषित होने वाले सिंक्रोनस संदेश का उपयोग करके एक दूसरे को ईमेल प्रेषित करते हैं। कार्यकर्ता अपने कंप्यूटर को बंद करने से अन्य 99 कंप्यूटरों को फ्रीज करने का कारण बन सकता है जब तक कि कार्यकर्ता अपने कंप्यूटर को समान ईमेल को संसाधित करने के लिए वापस प्रारंभ नहीं करता है।


=== एसिंक्रोनस संदेश प्रेषण ===
=== एसिंक्रोनस संदेश प्रेषण ===
एसिंक्रोनस संदेश प्राप्त करने के साथ प्राप्त करने वाली वस्तु को नीचे या व्यस्त हो सकता है जब अनुरोध ऑब्जेक्ट संदेश प्रेषित करता है। फ़ंक्शन कॉल सादृश्य को जारी रखते हुए, यह एक फ़ंक्शन कॉल की तरह है जो कॉल किए गए फ़ंक्शन के पूरा होने की प्रतीक्षा किए बिना तुरंत वापस आ जाता है। संदेश एक क्यू में भेजे जाते हैं जहां उन्हें संग्रहीत किया जाता है जब तक कि प्राप्त प्रक्रिया उन्हें अनुरोध नहीं करती है। प्राप्त प्रक्रिया अपने संदेशों को संसाधित करती है और मूल प्रक्रिया (या कुछ नामित अगली प्रक्रिया) द्वारा पिकअप के लिए एक क्यू में परिणाम प्रेषित करता है।<ref>{{cite book|last=Orfali|first=Robert|title=The Essential Client/Server Survival Guide|year=1996|publisher=Wiley Computer Publishing|location=New York|isbn=0-471-15325-7|pages=[https://archive.org/details/essentialclients00orfa/page/95 95–133]|url=https://archive.org/details/essentialclients00orfa/page/95}}</ref>
एसिंक्रोनस संदेश प्राप्त करने के साथ प्राप्त करने वाली वस्तु को नीचे या व्यस्त हो सकता है जब अनुरोध ऑब्जेक्ट संदेश प्रेषित करता है। फ़ंक्शन कॉल सादृश्य को जारी रखते हुए, यह एक फ़ंक्शन कॉल की तरह है जो कॉल किए गए फ़ंक्शन के पूरा होने की प्रतीक्षा किए बिना तुरंत वापस आ जाता है। संदेश एक क्यू में भेजे जाते हैं जहां उन्हें संग्रहीत किया जाता है जब तक कि प्राप्त प्रक्रिया उन्हें अनुरोध नहीं करती है। प्राप्त प्रक्रिया अपने संदेशों को संसाधित करती है और मूल प्रक्रिया (या कुछ नामित अगली प्रक्रिया) द्वारा पिकअप के लिए एक क्यू में परिणाम प्रेषित करता है।<ref>{{cite book|last=Orfali|first=Robert|title=The Essential Client/Server Survival Guide|year=1996|publisher=Wiley Computer Publishing|location=New York|isbn=0-471-15325-7|pages=[https://archive.org/details/essentialclients00orfa/page/95 95–133]|url=https://archive.org/details/essentialclients00orfa/page/95}}</ref>


Line 37: Line 37:


=== हाइब्रिड ===
=== हाइब्रिड ===
सिंक्रोनस संचार को सिंक्रोनस संचार के शीर्ष पर एक [[सिंक्रोनाइज़र (एल्गोरिथ्म)]] का उपयोग करके बनाया जा सकता है। उदाहरण के लिए, α-[[सिंक्रोनाइज़र (एल्गोरिथ्म)|सिंक्रोनाइज़र]] यह सुनिश्चित करके काम करता है कि प्रेषक सदैव अभिग्राही से एक अभिस्वीकृति संदेश की प्रतीक्षा करता है। प्रेषक केवल अभिस्वीकृति प्राप्त होने के बाद अगला संदेश प्रेषित करता है। दूसरी ओर, एसिंक्रोनस संचार भी सिंक्रोनस संचार के शीर्ष पर बनाया जा सकता है। उदाहरण के लिए, आधुनिक [[microkernel|माइक्रोकर्नेल]] सामान्य रूप से केवल एक सिंक्रोनस संदेश प्रेषण प्राथमिकता{{Citation needed|date=April 2015}} प्रदान करते हैं और सहायक थ्रेड्स का उपयोग करके एसिंक्रोनस संदेश प्रेषण को शीर्ष पर प्रयुक्त किया जा सकता है।
सिंक्रोनस संचार को सिंक्रोनस संचार के शीर्ष पर एक [[सिंक्रोनाइज़र (एल्गोरिथ्म)]] का उपयोग करके बनाया जा सकता है। उदाहरण के लिए, α-[[सिंक्रोनाइज़र (एल्गोरिथ्म)|सिंक्रोनाइज़र]] यह सुनिश्चित करके काम करता है कि प्रेषक सदैव अभिग्राही से एक अभिस्वीकृति संदेश की प्रतीक्षा करता है। प्रेषक केवल अभिस्वीकृति प्राप्त होने के बाद अगला संदेश प्रेषित करता है। दूसरी ओर, एसिंक्रोनस संचार भी सिंक्रोनस संचार के शीर्ष पर बनाया जा सकता है। उदाहरण के लिए, आधुनिक [[microkernel|माइक्रोकर्नेल]] सामान्य रूप से केवल एक सिंक्रोनस संदेश प्रेषण प्राथमिकता{{Citation needed|date=April 2015}} प्रदान करते हैं और सहायक थ्रेड्स का उपयोग करके एसिंक्रोनस संदेश प्रेषण को शीर्ष पर प्रयुक्त किया जा सकता है।


== डिस्ट्रीब्यूटेड ऑब्जेक्ट्स ==
== डिस्ट्रीब्यूटेड ऑब्जेक्ट्स ==
{{Main|Distributed object}}
{{Main|डिस्ट्रीब्यूटेड ऑब्जेक्ट्स}}
संदेश-प्रेषण प्रणाली या तो डिस्ट्रीब्यूटेड या स्थानीय वस्तुओं का उपयोग करते हैं।डिस्ट्रीब्यूटेड ऑब्जेक्ट्स के साथ प्रेषक और अभिग्राही विभिन्न कंप्यूटरों पर हो सकते हैं, विभिन्न ऑपरेटिंग सिस्टम चला सकते हैं, विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करते हैं, आदि। इस मामले में बस लेयर एक प्रणाली से दूसरे में डेटा को एक दूसरे में परिवर्तित करने, डेटा प्रेषण  और प्राप्त करने के बारे में विवरण का ध्यान रखता है।नेटवर्क, आदि [[यूनिक्स]] में [[सुदूर प्रणाली संदेश]] (आरपीसी) प्रोटोकॉल इसका एक प्रारंभिक उदाहरण था।ध्यान दें कि इस प्रकार के संदेश के साथ यह एक आवश्यकता नहीं है कि प्रेषक और न ही अभिग्राही ऑब्जेक्ट-उन्मुख प्रोग्रामिंग का उपयोग करता है।प्रक्रियात्मक भाषा प्रणालियों को संदेश प्रेषण और प्राप्त करने में सक्षम बड़ी दाने वाली वस्तुओं के रूप में लपेटा और माना जा सकता है।<ref>{{cite book|last=Orfali|first=Robert|title=The Essential Client/Server Survival Guide|year=1996|publisher=Wiley Computer Publishing|location=New York|isbn=0-471-15325-7|pages=[https://archive.org/details/essentialclients00orfa/page/375 375–397]|url=https://archive.org/details/essentialclients00orfa/page/375}}</ref>
डिस्ट्रीब्यूटेड वस्तुओं का समर्थन करने वाली प्रणालियों के उदाहरण हैं: एमराल्ड (प्रोग्रामिंग भाषा), [[ओएनसी आरपीसी]], [[कोरबा]], [[जावा आरएमआई]], डिस्ट्रीब्यूटेड घटक ऑब्जेक्ट मॉडल, एसओएपी (प्रोटोकॉल), .NET रिमोटिंग, [[सीटीओएस]], [[ QNX ]], [[ओपनबाइंडर]] और [[डी-बस]]।डिस्ट्रीब्यूटेड ऑब्जेक्ट प्रणाली को साझा कुछ भी नहीं कहा गया है क्योंकि संदेश भेजने वाला संदेश अंतर्निहित राज्य परिवर्तनों को छिपाता है जो संदेश प्रेषण के कार्यान्वयन में उपयोग किया जा सकता है।


डिस्ट्रीब्यूटेड, या अतुल्यकालिक, संदेश-प्रेषण में एक प्रक्रिया को कॉल करने की तुलना में अतिरिक्त ओवरहेड होता है।संदेश-प्रेषण में, तर्कों को नए संदेश में कॉपी किया जाना चाहिए।कुछ तर्कों में मेगाबाइट डेटा हो सकता है, जिनमें से सभी को कॉपी किया जाना चाहिए और प्राप्त करने वाली वस्तु पर प्रेषित किया जाना चाहिए।
संदेश-प्रेषण प्रणाली या तो डिस्ट्रीब्यूटेड या स्थानीय वस्तुओं का उपयोग करते हैं। डिस्ट्रीब्यूटेड वस्तुओं के साथ प्रेषक और रिसीवर अलग-अलग कंप्यूटरों पर हो सकते हैं जो अलग-अलग प्रोग्रामिंग भाषाओं का उपयोग करके अलग-अलग ऑपरेटिंग प्रणाली को संचालित करते है। इस स्थिति में बस लेयर एक प्रणाली से दूसरे में डेटा को एक दूसरे में परिवर्तित करने, डेटा प्रेषण और प्राप्त करने के बारे में विवरण का ध्यान रखता है।नेटवर्क, आदि [[यूनिक्स]] में [[सुदूर प्रणाली संदेश|दूरस्थ प्रणाली संदेश]] (आरपीसी) प्रोटोकॉल इसका एक प्रारंभिक उदाहरण था। ध्यान दें कि इस प्रकार के संदेश के साथ यह एक आवश्यकता नहीं है कि प्रेषक और न ही अभिग्राही ऑब्जेक्ट-उन्मुख प्रोग्रामिंग का उपयोग करता है। प्रक्रियात्मक भाषा प्रणालियों को संदेश प्रेषण और प्राप्त करने में सक्षम बड़े कणों वाली वस्तुओं के रूप में आच्छादित और उपचारित माना जा सकता है।<ref>{{cite book|last=Orfali|first=Robert|title=The Essential Client/Server Survival Guide|year=1996|publisher=Wiley Computer Publishing|location=New York|isbn=0-471-15325-7|pages=[https://archive.org/details/essentialclients00orfa/page/375 375–397]|url=https://archive.org/details/essentialclients00orfa/page/375}}</ref>


पारंपरिक [[कॉलिंग सम्मेलन]] मेमोरी उपयोग, [[बिट दर]] और इलाके के संदर्भ में संदेश-प्रेषण से भिन्न होते हैं।तर्क प्राप्तकर्ता को सामान्य रूप से [[सामान्य प्रयोजन रजिस्टर]] द्वारा पारित किया जाता है, जिसमें कोई अतिरिक्त भंडारण की आवश्यकता होती है और न ही स्थानांतरण समय की आवश्यकता होती है, या एक पैरामीटर (कंप्यूटर विज्ञान) सूची में तर्क के पते (कुछ बिट्स) होते हैं।डिस्ट्रीब्यूटेड प्रणालियों के लिए एड्रेस-प्रेषण संभव नहीं है क्योंकि प्रणाली अलग-अलग एड्रेस स्पेस का उपयोग करते हैं।
डिस्ट्रीब्यूटेड वस्तुओं का समर्थन करने वाली प्रणालियों के उदाहरण एमराल्ड (प्रोग्रामिंग भाषा), [[ओएनसी आरपीसी]], [[कोरबा]], [[जावा आरएमआई]], डिस्ट्रीब्यूटेड घटक ऑब्जेक्ट मॉडल, एसओएपी (प्रोटोकॉल), .नेट रिमोटिंग, [[सीटीओएस]], [[ QNX |क्यूएनएक्स]], [[ओपनबाइंडर|मुक्त-बाइंडर]] और [[डी-बस|D-बस]] सम्मिलित है। डिस्ट्रीब्यूटेड ऑब्जेक्ट प्रणाली को साझा कुछ भी नहीं कहा गया है क्योंकि संदेश प्रेषित करने वाला संदेश अंतर्निहित स्थिति परिवर्तनों को गोपनीय रखता है जो संदेश प्रेषण के कार्यान्वयन में उपयोग किया जा सकता है।


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


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


एक संदेश-हैंडलर, सामान्य रूप से, प्रक्रिया करेगा <ref>{{Cite web|url=https://emailspedia.com/how-to-hide-text-messages-on-iphone/|title=Process of Hide messages |date=2022-04-13|website=Message|language=en|access-date=2022-04-12}}</ref> एक से अधिक प्रेषक से संदेश।इसका मतलब है कि इसका राज्य एकल प्रेषक या ग्राहक प्रक्रिया के व्यवहार से असंबंधित कारणों के लिए बदल सकता है।यह किसी वस्तु के विशिष्ट व्यवहार के विपरीत है, जिस पर तरीकों को आमंत्रित किया जा रहा है: उत्तरार्द्ध को विधि इनवोकेशन के बीच समान स्थिति में रहने की उम्मीद है।दूसरे शब्दों में, संदेश-हैंडलर एक [[अस्थिर चर]] के अनुरूप व्यवहार करता है।
वेब ब्राउज़र और वेब सर्वर उन प्रक्रियाओं के उदाहरण हैं जो संदेश-प्रेरण द्वारा संचार करते हैं। यूआरएल प्रक्रिया आंतरिक भाग को प्रदर्शित किए बिना संसाधन को संदर्भित करने का एक उदाहरण है।
 
सबरूटीन कॉल या [[विधि]] (कंप्यूटर प्रोग्रामिंग) इनवॉक तब तक बाहर नहीं निकलेगा इनवोक्ड कंप्यूटेशन समाप्त नहीं हो जाता। इसके विपरीत, एसिंक्रोनस संदेश-प्रेषण, अनुरोध संदेश प्रेषित किए जाने के बाद एक महत्वपूर्ण समय आ सकती है।
 
एक संदेश-हैंडलर, सामान्य रूप से, एक से अधिक प्रेषकों के <ref>{{Cite web|url=https://emailspedia.com/how-to-hide-text-messages-on-iphone/|title=Process of Hide messages |date=2022-04-13|website=Message|language=en|access-date=2022-04-12}}</ref> संदेशों को संसाधित करेगा। इसका तात्पर्य है कि इसकी अवस्था एकल प्रेषक या क्लाइंट प्रक्रिया के व्यवहार से असंबंधित कारणों के लिए बदल सकता है। यह किसी वस्तु के विशिष्ट व्यवहार के विपरीत है, जिस पर तरीकों को इनवोक किया जा रहा है: उत्तरार्द्ध को विधि इनवोकेशन के बीच समान स्थिति में रहने की अपेक्षा की जाती है। दूसरे शब्दों में, संदेश-हैंडलर अस्थिर वस्तु के अनुरूप व्यवहार करता है।


== गणितीय मॉडल ==
== गणितीय मॉडल ==
संदेश पारित करने के प्रमुख गणितीय मॉडल अभिनेता मॉडल और [[पीआई कैलकुलस]] हैं।<ref>{{cite journal|last=Milner|first=Robin|title=Elements of interaction: Turing award lecture|journal=Communications of the ACM|date=Jan 1993|volume=36|issue=1|pages=78–89|doi=10.1145/151233.151240 |doi-access=free}}</ref><ref>{{cite journal|ref={{harvid|Hewitt et al.|1973}}|author=Carl Hewitt|author2=Peter Bishop |author3=Richard Steiger|title=A Universal Modular Actor Formalism for Artificial Intelligence|publisher=IJCAI|year=1973}}</ref> गणितीय शब्दों में एक संदेश किसी वस्तु को नियंत्रण पास करने का एकल साधन है।यदि ऑब्जेक्ट संदेश पर प्रतिक्रिया करता है, तो उस संदेश के लिए एक [[विधि (कंप्यूटर विज्ञान)]] है।
संदेश पारित करने के प्रमुख गणितीय मॉडल ऐक्टर मॉडल और [[पीआई कैलकुलस]] हैं।<ref>{{cite journal|last=Milner|first=Robin|title=Elements of interaction: Turing award lecture|journal=Communications of the ACM|date=Jan 1993|volume=36|issue=1|pages=78–89|doi=10.1145/151233.151240 |doi-access=free}}</ref><ref>{{cite journal|ref={{harvid|Hewitt et al.|1973}}|author=Carl Hewitt|author2=Peter Bishop |author3=Richard Steiger|title=A Universal Modular Actor Formalism for Artificial Intelligence|publisher=IJCAI|year=1973}}</ref> गणितीय शब्दों में एक संदेश किसी वस्तु को नियंत्रण देने का एकल साधन है। यदि ऑब्जेक्ट संदेश पर प्रतिक्रिया करता है, तो उस संदेश के लिए एक [[विधि (कंप्यूटर विज्ञान)]] है।


एलन काई ने तर्क दिया है कि संदेश प्रेषण ओओपी में वस्तुओं की तुलना में अधिक महत्वपूर्ण है, और यह कि वस्तुओं को प्रायः अधिक जोर दिया जाता है।लाइव डिस्ट्रीब्यूटेड ऑब्जेक्ट्स प्रोग्रामिंग मॉडल इस अवलोकन पर निर्माण करता है;यह उच्च-स्तरीय, कार्यात्मक-शैली के विनिर्देशों का उपयोग करके संदेश पैटर्न के संदर्भ में एक जटिल डिस्ट्रीब्यूटेड प्रणाली के व्यवहार को चिह्नित करने के लिए एक डिस्ट्रीब्यूटेड डेटा प्रवाह की अवधारणा का उपयोग करता है।<ref>{{cite web|last=Kay|first=Alan|title=prototypes vs classes was: Re: Sun's HotSpot|url=http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html|work=lists.squeakfoundation.org|access-date=2 January 2014}}</ref>
एलन काई ने तर्क दिया है कि संदेश प्रेषण ओओपी में वस्तुओं की तुलना में अधिक महत्वपूर्ण है, और यह कि वस्तुओं को प्रायः अधिक जोर दिया जाता है। सक्रिय डिस्ट्रीब्यूटेड ऑब्जेक्ट्स प्रोग्रामिंग मॉडल इस अवलोकन पर निर्माण करता है; यह उच्च-स्तरीय, कार्यात्मक-शैली के विनिर्देशों का उपयोग करके संदेश पैटर्न के संदर्भ में एक जटिल डिस्ट्रीब्यूटेड प्रणाली के व्यवहार को चिह्नित करने के लिए एक डिस्ट्रीब्यूटेड डेटा प्रवाह की अवधारणा का उपयोग करता है।<ref>{{cite web|last=Kay|first=Alan|title=prototypes vs classes was: Re: Sun's HotSpot|url=http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html|work=lists.squeakfoundation.org|access-date=2 January 2014}}</ref>




== उदाहरण ==
== उदाहरण ==
* [[अभिनेता मॉडल कार्यान्वयन]]
* [[अभिनेता मॉडल कार्यान्वयन|ऐक्टर मॉडल कार्यान्वयन]]
* अनाकार कम्प्यूटिंग
* अनाकार कम्प्यूटिंग
* अनुक्रमिक प्रक्रियाओं का संचार करना
* अनुक्रमिक प्रक्रियाओं का संचार करना
* प्रवाह-आधारित प्रोग्रामिंग
* संचार-आधारित प्रोग्रामिंग
* [[साबुन]]
* एसओएपी


== यह भी देखें ==
== यह भी देखें ==
* [[सक्रिय संदेश]]
* [[सक्रिय संदेश]]
* [[वितरित अभिकलन|डिस्ट्रीब्यूटेड अभिकलन]]
* [[वितरित अभिकलन|डिस्ट्रीब्यूटेड कंप्यूटिंग]]
* [[इवेंट लूप]]
* [[इवेंट लूप]]
* [[मैसेजिंग पैटर्न|संदेश प्रेषण पैटर्न]]
* [[मैसेजिंग पैटर्न|संदेश प्रेषण पैटर्न]]
Line 75: Line 77:
* [[संदेश पासिंग इंटरफ़ेस|संदेश प्रेषण इंटरफ़ेस]]
* [[संदेश पासिंग इंटरफ़ेस|संदेश प्रेषण इंटरफ़ेस]]
* प्रोग्रामिंग भाषाएं जिसमें एक केंद्रित सुविधा के रूप में संदेश प्रेषण सम्मिलित है:
* प्रोग्रामिंग भाषाएं जिसमें एक केंद्रित सुविधा के रूप में संदेश प्रेषण सम्मिलित है:
** Applescript
** एप्पलस्क्रिप्ट
** [[एर्लंग (प्रोग्रामिंग भाषा)]]
** [[एर्लंग (प्रोग्रामिंग भाषा)]]
** अमृत (प्रोग्रामिंग भाषा)
** एलिक्सिर (प्रोग्रामिंग भाषा)
** [[ हाइपर कार्ड ]], [[लिवकोड]]
** [[ हाइपर कार्ड | हाइपर कार्ड]], [[लिवकोड]]
** [[गो (प्रोग्रामिंग भाषा)]]
** [[गो (प्रोग्रामिंग भाषा)]]
** [[उद्देश्य सी]]
** [[उद्देश्य सी|ऑब्जेक्टिव]]-C
** जंग (प्रोग्रामिंग भाषा)<ref>{{cite web |title=Using Message Passing to Transfer Data Between Threads - The Rust Programming Language |url=https://doc.rust-lang.org/book/ch16-02-message-passing.html |website=Rust-lang.org}}</ref>
** आरयूएसटी (प्रोग्रामिंग भाषा)<ref>{{cite web |title=Using Message Passing to Transfer Data Between Threads - The Rust Programming Language |url=https://doc.rust-lang.org/book/ch16-02-message-passing.html |website=Rust-lang.org}}</ref>
** [[स्काला (प्रोग्रामिंग भाषा)]]
** [[स्काला (प्रोग्रामिंग भाषा)]]
** गपशप
** स्मॉलटॉक
** स्व (प्रोग्रामिंग भाषा)
** एसईएलएफ (प्रोग्रामिंग भाषा)
** [[समवर्ती एमएल]]
** [[समवर्ती एमएल]]


Line 108: Line 110:
{{Inter-process communication}}
{{Inter-process communication}}


{{DEFAULTSORT:Message Passing}}[[Category: वितरित अभिकलन वास्तुकला]] [[Category: अंतःप्रक्रम संचार]]
{{DEFAULTSORT:Message Passing}}
 
 


[[Category: Machine Translated Page]]
[[Category:All articles with unsourced statements|Message Passing]]
[[Category:Created On 18/02/2023]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Message Passing]]
[[Category:Articles with unsourced statements from April 2015|Message Passing]]
[[Category:Articles with unsourced statements from April 2021|Message Passing]]
[[Category:CS1 English-language sources (en)]]
[[Category:CS1 errors]]
[[Category:Collapse templates|Message Passing]]
[[Category:Created On 18/02/2023|Message Passing]]
[[Category:Lua-based templates|Message Passing]]
[[Category:Machine Translated Page|Message Passing]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Message Passing]]
[[Category:Pages with script errors|Message Passing]]
[[Category:Sidebars with styles needing conversion|Message Passing]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Message Passing]]
[[Category:Templates generating microformats|Message Passing]]
[[Category:Templates that add a tracking category|Message Passing]]
[[Category:Templates that are not mobile friendly|Message Passing]]
[[Category:Templates that generate short descriptions|Message Passing]]
[[Category:Templates using TemplateData|Message Passing]]
[[Category:Wikipedia metatemplates|Message Passing]]
[[Category:अंतःप्रक्रम संचार|Message Passing]]
[[Category:वितरित अभिकलन वास्तुकला|Message Passing]]

Latest revision as of 09:37, 22 May 2023

यह लेख कंप्यूटर विज्ञान की अवधारणा के बारे में है। अन्य उपयोगों के लिए, संदेश प्रेषण (बहुविकल्पी) देखें।

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

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

अवलोकन

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

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

इसका उपयोग कैसे किया जा सकता है, इसका पहला उदाहरण कंप्यूटर ग्राफिक्स के डोमेन में था। ग्राफिक वस्तुओं में कुशलतापूर्वक उपयोग करने में विभिन्न जटिलताएं सम्मिलित हैं। उदाहरण के लिए, किसी संलग्न आकृति के क्षेत्रफल की गणना करने के लिए केवल सही सूत्र का उपयोग करना इस आधार पर अलग-अलग होगा कि आकृति त्रिभुज, आयत, दीर्घवृत्त, या वृत्त है। पारंपरिक कंप्यूटर प्रोग्रामिंग में इसका परिणाम लंबे IF-THEN स्टेटमेंट्स के परीक्षण के रूप में होता है जो यह परीक्षण करते हैं कि आकृति किस प्रकार के वस्तु की थी और उपयुक्त कोड को कॉल कर रही थी। इसे नियंत्रण करने का वस्तु-उन्मुख तरीका Shape जैसे नामक एक वर्ग को उपवर्गों जैसे कि Rectangle और Ellipse (जो बदले में Square और Circleके उपवर्ग हैं) और फिर किसी भी Shape को एक संदेश प्रेषित करना है जो इसे अपने क्षेत्र की गणना करने के लिए कह रहा है। प्रत्येक Shape वस्तु तब उपवर्ग की विधि को उस प्रकार की वस्तु के लिए उपयुक्त सूत्र के साथ प्रयुक्त करेगी।[1]

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

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


सिंक्रोनस बनाम एसिंक्रोनस संदेश प्रेषण

सिंक्रोनस संदेश प्रेषण

समान समय में संचलित होने वाली वस्तुओं के बीच सिंक्रोनस संदेश प्रेषण होता है। इसका उपयोग वस्तु-उन्मुख प्रोग्रामिंग भाषाओं जैसे कि जावा (प्रोग्रामिंग भाषा) और स्मॉलटॉक द्वारा किया जाता है।

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

100 डेस्कटॉप कंप्यूटर वाले एक व्यस्त व्यावसायिक कार्यालय की कल्पना करें जो विशेष रूप से प्रेषित होने वाले सिंक्रोनस संदेश का उपयोग करके एक दूसरे को ईमेल प्रेषित करते हैं। कार्यकर्ता अपने कंप्यूटर को बंद करने से अन्य 99 कंप्यूटरों को फ्रीज करने का कारण बन सकता है जब तक कि कार्यकर्ता अपने कंप्यूटर को समान ईमेल को संसाधित करने के लिए वापस प्रारंभ नहीं करता है।

एसिंक्रोनस संदेश प्रेषण

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

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

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

हाइब्रिड

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

डिस्ट्रीब्यूटेड ऑब्जेक्ट्स

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

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

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

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

वेब ब्राउज़र और वेब सर्वर उन प्रक्रियाओं के उदाहरण हैं जो संदेश-प्रेरण द्वारा संचार करते हैं। यूआरएल प्रक्रिया आंतरिक भाग को प्रदर्शित किए बिना संसाधन को संदर्भित करने का एक उदाहरण है।

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

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

गणितीय मॉडल

संदेश पारित करने के प्रमुख गणितीय मॉडल ऐक्टर मॉडल और पीआई कैलकुलस हैं।[6][7] गणितीय शब्दों में एक संदेश किसी वस्तु को नियंत्रण देने का एकल साधन है। यदि ऑब्जेक्ट संदेश पर प्रतिक्रिया करता है, तो उस संदेश के लिए एक विधि (कंप्यूटर विज्ञान) है।

एलन काई ने तर्क दिया है कि संदेश प्रेषण ओओपी में वस्तुओं की तुलना में अधिक महत्वपूर्ण है, और यह कि वस्तुओं को प्रायः अधिक जोर दिया जाता है। सक्रिय डिस्ट्रीब्यूटेड ऑब्जेक्ट्स प्रोग्रामिंग मॉडल इस अवलोकन पर निर्माण करता है; यह उच्च-स्तरीय, कार्यात्मक-शैली के विनिर्देशों का उपयोग करके संदेश पैटर्न के संदर्भ में एक जटिल डिस्ट्रीब्यूटेड प्रणाली के व्यवहार को चिह्नित करने के लिए एक डिस्ट्रीब्यूटेड डेटा प्रवाह की अवधारणा का उपयोग करता है।[8]


उदाहरण

यह भी देखें

संदर्भ

  1. Goldberg, Adele; David Robson (1989). Smalltalk-80 The Language. Addison Wesley. pp. 5–16. ISBN 0-201-13688-0.
  2. Orfali, Robert (1996). The Essential Client/Server Survival Guide. New York: Wiley Computer Publishing. pp. 1–22. ISBN 0-471-15325-7.
  3. Orfali, Robert (1996). The Essential Client/Server Survival Guide. New York: Wiley Computer Publishing. pp. 95–133. ISBN 0-471-15325-7.
  4. Orfali, Robert (1996). The Essential Client/Server Survival Guide. New York: Wiley Computer Publishing. pp. 375–397. ISBN 0-471-15325-7.
  5. "Process of Hide messages". Message (in English). 2022-04-13. Retrieved 2022-04-12.
  6. Milner, Robin (Jan 1993). "Elements of interaction: Turing award lecture". Communications of the ACM. 36 (1): 78–89. doi:10.1145/151233.151240.
  7. Carl Hewitt; Peter Bishop; Richard Steiger (1973). "A Universal Modular Actor Formalism for Artificial Intelligence". IJCAI. {{cite journal}}: Cite journal requires |journal= (help)
  8. Kay, Alan. "prototypes vs classes was: Re: Sun's HotSpot". lists.squeakfoundation.org. Retrieved 2 January 2014.
  9. "Using Message Passing to Transfer Data Between Threads - The Rust Programming Language". Rust-lang.org.


अग्रिम पठन


बाहरी संबंध