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

From Vigyanwiki
(Created page with "{{Short description|Technique for running a program on a computer without directly calling it}} {{About|the computer science concept}} कंप्यूटर विज...")
 
No edit summary
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}}
{{About|the computer science concept}}
यह लेख कंप्यूटर विज्ञान की अवधारणा के बारे में है। अन्य उपयोगों के लिए, संदेश प्रेषण (बहुविकल्पी) देखें।
[[कंप्यूटर]] विज्ञान में, संदेश पासिंग कंप्यूटर पर व्यवहार (यानी, [[कंप्यूटर प्रोग्राम]] चलाने) को आमंत्रित करने के लिए एक तकनीक है।इनवोकिंग प्रोग्राम एक प्रक्रिया (कंप्यूटिंग) (जो एक [[अभिनेता मॉडल]] या [[ वस्तु विज्ञान ([[कंप्यूटर विज्ञान]]) ]] हो सकता है) को एक संदेश भेजता है और उस प्रक्रिया और उसके सहायक बुनियादी ढांचे पर निर्भर करता है, फिर कुछ उपयुक्त कोड का चयन करने और चलाने के लिए।संदेश पासिंग पारंपरिक प्रोग्रामिंग से भिन्न होता है जहां एक प्रक्रिया, [[सबरूटीन]], या फ़ंक्शन सीधे नाम से आमंत्रित किया जाता है।संदेश पासिंग कुछ समवर्ती (कंप्यूटर विज्ञान) #Models और [[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग ]] के लिए महत्वपूर्ण है।


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


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


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


इसका उपयोग कैसे किया जा सकता है, इसका पहला उदाहरण कंप्यूटर ग्राफिक्स के डोमेन में था।ग्राफिक वस्तुओं में हेरफेर करने में विभिन्न जटिलताएं शामिल हैं।उदाहरण के लिए, बस एक संलग्न आकार के क्षेत्र की गणना करने के लिए सही सूत्र का उपयोग करना इस बात पर निर्भर करेगा कि क्या आकार एक त्रिभुज, आयत, दीर्घवृत्त, या सर्कल है।पारंपरिक कंप्यूटर प्रोग्रामिंग में यह लंबे समय तक परिणाम होगा अगर-तब बयानों का परीक्षण किया जाएगा कि आकार किस प्रकार की वस्तु थी और उपयुक्त कोड को कॉल करना।इसे संभालने का ऑब्जेक्ट-ओरिएंटेड तरीका एक वर्ग को परिभाषित करना है <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>
 


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


== सिंक्रोनस बनाम एसिंक्रोनस संदेश पासिंग ==
{{one source|section|date=February 2015}}


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


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


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


=== एसिंक्रोनस संदेश पासिंग ===
एसिंक्रोनस संदेश प्रेषण को प्रणाली के लिए डेटा को संग्रह करने और पुनः बनाने के लिए अतिरिक्त क्षमताओं की आवश्यकता होती है जो समवर्ती रूप से नहीं चल सकते हैं, और सामान्य रूप से सॉफ्टवेयर के [[मध्यस्थ]] स्तर (प्रायः मिडलवेयर कहा जाता है) द्वारा नियंत्रित किया जाता है जो एक सामान्य प्रकार का संदेश-उन्मुख मिडलवेयर (एमओएम) है।
Asynchronous संदेश प्राप्त करने के साथ प्राप्त करने वाली वस्तु को नीचे या व्यस्त हो सकता है जब अनुरोध ऑब्जेक्ट संदेश भेजता है।फ़ंक्शन कॉल सादृश्य को जारी रखते हुए, यह एक फ़ंक्शन कॉल की तरह है जो तुरंत वापस लौटता है, बिना कॉल किए गए फ़ंक्शन को पूरा करने की प्रतीक्षा के बिना।संदेश एक कतार में भेजे जाते हैं जहां उन्हें संग्रहीत किया जाता है जब तक कि प्राप्त प्रक्रिया उन्हें अनुरोध नहीं करती है।प्राप्त प्रक्रिया अपने संदेशों को संसाधित करती है और मूल प्रक्रिया (या कुछ नामित अगली प्रक्रिया) द्वारा पिकअप के लिए एक कतार में परिणाम भेजती है।<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>
एसिंक्रोनस मैसेजिंग को सिस्टम के लिए डेटा को स्टोर करने और फिर से बनाने के लिए अतिरिक्त क्षमताओं की आवश्यकता होती है जो समवर्ती रूप से नहीं चल सकते हैं, और आमतौर पर सॉफ्टवेयर के [[मध्यस्थ]] स्तर (अक्सर मिडलवेयर कहा जाता है) द्वारा नियंत्रित किया जाता है;एक सामान्य प्रकार संदेश-उन्मुख मिडलवेयर (एमओएम) है।


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


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


== वितरित ऑब्जेक्ट्स ==
== डिस्ट्रीब्यूटेड ऑब्जेक्ट्स ==
{{Main|Distributed object}}
{{Main|Distributed object}}
संदेश-पासिंग सिस्टम या तो वितरित या स्थानीय वस्तुओं का उपयोग करते हैं।वितरित ऑब्जेक्ट्स के साथ प्रेषक और रिसीवर विभिन्न कंप्यूटरों पर हो सकते हैं, विभिन्न ऑपरेटिंग सिस्टम चला सकते हैं, विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करते हैं, आदि। इस मामले में बस लेयर एक सिस्टम से दूसरे में डेटा को एक दूसरे में परिवर्तित करने, डेटा भेजने और प्राप्त करने के बारे में विवरण का ध्यान रखता है।नेटवर्क, आदि [[यूनिक्स]] में [[सुदूर प्रणाली संदेश]] (आरपीसी) प्रोटोकॉल इसका एक प्रारंभिक उदाहरण था।ध्यान दें कि इस प्रकार के संदेश के साथ यह एक आवश्यकता नहीं है कि प्रेषक और न ही रिसीवर ऑब्जेक्ट-उन्मुख प्रोग्रामिंग का उपयोग करता है।प्रक्रियात्मक भाषा प्रणालियों को संदेश भेजने और प्राप्त करने में सक्षम बड़ी दाने वाली वस्तुओं के रूप में लपेटा और माना जा सकता है।<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>
संदेश-प्रेषण प्रणाली या तो डिस्ट्रीब्यूटेड या स्थानीय वस्तुओं का उपयोग करते हैं।डिस्ट्रीब्यूटेड ऑब्जेक्ट्स के साथ प्रेषक और अभिग्राही विभिन्न कंप्यूटरों पर हो सकते हैं, विभिन्न ऑपरेटिंग सिस्टम चला सकते हैं, विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करते हैं, आदि। इस मामले में बस लेयर एक प्रणाली से दूसरे में डेटा को एक दूसरे में परिवर्तित करने, डेटा प्रेषण  और प्राप्त करने के बारे में विवरण का ध्यान रखता है।नेटवर्क, आदि [[यूनिक्स]] में [[सुदूर प्रणाली संदेश]] (आरपीसी) प्रोटोकॉल इसका एक प्रारंभिक उदाहरण था।ध्यान दें कि इस प्रकार के संदेश के साथ यह एक आवश्यकता नहीं है कि प्रेषक और न ही अभिग्राही ऑब्जेक्ट-उन्मुख प्रोग्रामिंग का उपयोग करता है।प्रक्रियात्मक भाषा प्रणालियों को संदेश प्रेषण और प्राप्त करने में सक्षम बड़ी दाने वाली वस्तुओं के रूप में लपेटा और माना जा सकता है।<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 ]], [[ओपनबाइंडर]] और [[डी-बस]]।वितरित ऑब्जेक्ट सिस्टम को साझा कुछ भी नहीं कहा गया है क्योंकि संदेश भेजने वाला संदेश अंतर्निहित राज्य परिवर्तनों को छिपाता है जो संदेश भेजने के कार्यान्वयन में उपयोग किया जा सकता है।
डिस्ट्रीब्यूटेड वस्तुओं का समर्थन करने वाली प्रणालियों के उदाहरण हैं: एमराल्ड (प्रोग्रामिंग भाषा), [[ओएनसी आरपीसी]], [[कोरबा]], [[जावा आरएमआई]], डिस्ट्रीब्यूटेड घटक ऑब्जेक्ट मॉडल, एसओएपी (प्रोटोकॉल), .NET रिमोटिंग, [[सीटीओएस]], [[ QNX ]], [[ओपनबाइंडर]] और [[डी-बस]]।डिस्ट्रीब्यूटेड ऑब्जेक्ट प्रणाली को साझा कुछ भी नहीं कहा गया है क्योंकि संदेश भेजने वाला संदेश अंतर्निहित राज्य परिवर्तनों को छिपाता है जो संदेश प्रेषण के कार्यान्वयन में उपयोग किया जा सकता है।


{{unreferenced section|date=February 2015}}
डिस्ट्रीब्यूटेड, या अतुल्यकालिक, संदेश-प्रेषण में एक प्रक्रिया को कॉल करने की तुलना में अतिरिक्त ओवरहेड होता है।संदेश-प्रेषण में, तर्कों को नए संदेश में कॉपी किया जाना चाहिए।कुछ तर्कों में मेगाबाइट डेटा हो सकता है, जिनमें से सभी को कॉपी किया जाना चाहिए और प्राप्त करने वाली वस्तु पर प्रेषित किया जाना चाहिए।
{{Expert needed|Computer science|section|reason=Section mixes between local and distributed message-passing, eg. to imply that ''local'' message passing cannot be performed with pass-by-reference and has to include entire objects, which is actually only partially correct for ''distributed'' systems|date=April 2015}}
वितरित, या अतुल्यकालिक, संदेश-पासिंग में एक प्रक्रिया को कॉल करने की तुलना में अतिरिक्त ओवरहेड होता है।संदेश-पासिंग में, तर्कों को नए संदेश में कॉपी किया जाना चाहिए।कुछ तर्कों में मेगाबाइट डेटा हो सकता है, जिनमें से सभी को कॉपी किया जाना चाहिए और प्राप्त करने वाली वस्तु पर प्रेषित किया जाना चाहिए।


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


वेब [[वेब ब्राउज़िंग]] और [[वेब सर्वर]] उन प्रक्रियाओं के उदाहरण हैं जो संदेश-पासिंग द्वारा संवाद करते हैं।एक [[URL]] प्रक्रिया इंटर्नल को उजागर किए बिना एक संसाधन को संदर्भित करने का एक उदाहरण है।
वेब [[वेब ब्राउज़िंग]] और [[वेब सर्वर]] उन प्रक्रियाओं के उदाहरण हैं जो संदेश-प्रेषण द्वारा संवाद करते हैं।एक [[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 69: Line 69:
== यह भी देखें ==
== यह भी देखें ==
* [[सक्रिय संदेश]]
* [[सक्रिय संदेश]]
* [[वितरित अभिकलन]]
* [[वितरित अभिकलन|डिस्ट्रीब्यूटेड अभिकलन]]
* [[इवेंट लूप]]
* [[इवेंट लूप]]
* [[मैसेजिंग पैटर्न]]
* [[मैसेजिंग पैटर्न|संदेश प्रेषण पैटर्न]]
* कंप्यूटर क्लस्टर में संदेश पासिंग
* कंप्यूटर क्लस्टर में संदेश प्रेषण
* [[संदेश पासिंग इंटरफ़ेस]]
* [[संदेश पासिंग इंटरफ़ेस|संदेश प्रेषण इंटरफ़ेस]]
* प्रोग्रामिंग भाषाएं जिसमें एक केंद्रित सुविधा के रूप में संदेश पासिंग शामिल है:
* प्रोग्रामिंग भाषाएं जिसमें एक केंद्रित सुविधा के रूप में संदेश प्रेषण सम्मिलित है:
** Applescript
** Applescript
** [[एर्लंग (प्रोग्रामिंग भाषा)]]
** [[एर्लंग (प्रोग्रामिंग भाषा)]]

Revision as of 08:56, 19 May 2023

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

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

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

अवलोकन

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

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

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

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

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


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

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

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

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

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

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

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

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

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

हाइब्रिड

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

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

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

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

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

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

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

एक संदेश-हैंडलर, सामान्य रूप से, प्रक्रिया करेगा [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.


अग्रिम पठन


बाहरी संबंध