संदेश देना

From alpha
Jump to navigation Jump to search

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

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

सिंहावलोकन

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

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

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

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


सिंक्रोनस बनाम एसिंक्रोनस मैसेज पासिंग

तुल्यकालिक संदेश गुजर रहा है

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

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

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

अतुल्यकालिक संदेश गुजर रहा है

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

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

संकर

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

वितरित वस्तुएं

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

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

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

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

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

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

गणितीय मॉडल

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

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


उदाहरण

यह भी देखें

Erlang (प्रोग्रामिंग भाषा) जिनमें एक केंद्रित विशेषता के रूप में संदेश पास करना शामिल है:

संदर्भ

  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. "संदेशों को छिपाने की प्रक्रिया". Message. 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). "आर्टिफिशियल इंटेलिजेंस के लिए एक सार्वभौमिक मॉड्यूलर अभिनेता औपचारिकता". 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. "थ्रेड्स के बीच डेटा ट्रांसफर करने के लिए मैसेज पासिंग का उपयोग करना - द रस्ट प्रोग्रामिंग लैंग्वेज". Rust-lang.org.


अग्रिम पठन


बाहरी संबंध