आप सहमत होंगे, खासकर यदि आप अभी भी प्रोग्रामिंग में नए हैं, तो कुछ कोडिंग शब्द डराने वाले हैं।
कुछ डेवलपर्स के लिए, "एसिंक्रोनस" और "सिंक्रोनस प्रोग्रामिंग" जैसे शब्द भ्रामक होते हैं, लेकिन अक्सर कोडिंग शब्दों का उपयोग किया जाता है। तो इन शब्दों का क्या मतलब है? वे कैसे अलग हैं? और वे कैसे काम करते हैं? हम इन सभी सवालों के जवाब देंगे।
कैसे तुल्यकालिक प्रोग्रामिंग काम करता है
सिंक्रोनस वेब ऐप्स संसाधनों को एकल और क्रमिक रूप से लोड करते हैं, जैसे कि जब पदानुक्रम में उच्च संसाधन या घटक लोड करने में विफल रहता है, तो नीचे दिए गए लोग इसका जवाब नहीं देंगे।
आपके द्वारा बहु-थ्रेडेड प्रोटोकॉल के साथ सिंक्रोनाइज़ करने का अनुरोध।
ध्यान दें: एक धागा एकल एंड-टू-एंड कार्यकर्ता या चैनल है जो प्रोग्रामिंग में अनुरोधों को संभालता है।
इनमें से प्रत्येक थ्रेड अलग-अलग सिंक्रोनस प्रोग्रामिंग में अनुरोधों को संभालता है। इसलिए प्रत्येक थ्रेड का निष्पादन समय है और अगली घटना को निष्पादित करने से पहले पूरी तरह से लोड करता है। नतीजतन, एक थ्रेड में घटना का निष्पादन अन्य थ्रेड्स को लॉक करता है, प्रक्रिया में पूरे उपयोगकर्ता इंटरफ़ेस को अवरुद्ध करता है।
आमतौर पर, वेब एप्लिकेशन जो पूरी तरह से सिंक्रोनस प्रोग्रामिंग लोड संसाधनों पर एक ताला में निर्भरता से चलते हैं। वास्तव में, POST और GET अनुरोध सहित प्रत्येक ऑपरेशन, प्रत्येक अनुरोध और प्रतिक्रिया के लिए नए सिरे से लोड करने की आवश्यकता है।
इसलिए, सिंक्रोनस कॉल यह सुनिश्चित करते हैं कि क्लाइंट या ब्राउज़र को अगले एक को निष्पादित करने से पहले पहले अनुरोध से प्रतिक्रिया मिलती है। यह अनावश्यक देरी और खराब उपयोगकर्ता अनुभव के परिणामस्वरूप हो सकता है।
सम्बंधित: जावा में मल्टी थ्रेडेड कोड कैसे लिखें
उदाहरण के लिए, आवश्यक फ़ील्ड भरने और फ़ॉर्म सबमिट करने के बाद, सिंक्रोनस पर चलने वाली वेबसाइट पर फ़ॉर्म सबमिट करने का प्रयास करते समय, क्लाइंट (ब्राउज़र) पूरे फॉर्म फ़ील्ड को लॉक कर देता है।
इसलिए यह आपको फ़ॉर्म फ़ील्ड में और अपडेट करने या वेब ऐप के किसी अन्य हिस्से पर क्लिक करने से रोकता है।
सम्बंधित: विंडोज पर Node.js और npm को कैसे स्थापित करें
यहां कुछ सिंक्रोनस कोड का एक उदाहरण दिया गया है, जिसमें फ़ाइल की सामग्री को पढ़ा जाता है fs नोड में मॉड्यूल ।js:
var fs = आवश्यकता ('fs');
const readData = fs.readFileSync ('text.txt');
कंसोल.लॉग (readData.toString ());
सेटटाइमआउट () => {
कंसोल.लॉग ('हैलो वर्ल्ड, मैं अन्य थ्रेड्स ब्लॉक करता हूं ...')
}, 1000
);
उपरोक्त कोड का उपयोग करता है readFileSync पाठ फ़ाइल की सामग्री प्राप्त करने की विधि, लेकिन यह कॉलबैक फ़ंक्शन का उपयोग नहीं करता है।
कैसे अतुल्यकालिक प्रोग्रामिंग काम करता है
अतुल्यकालिक प्रोग्रामिंग में, एप्लिकेशन गैर-अवरोधक इनपुट और आउटपुट (I / O) प्रोटोकॉल का उपयोग करके अनुरोधों और प्रतिक्रियाओं की सेवा करते हैं। सिंक्रोनस प्रोग्रामिंग के विपरीत, एक एसिंक्रोनस प्रोग्राम पदानुक्रम रूप से संचालन को निष्पादित नहीं करता है। इसलिए कार्यक्रम दूसरे के साथ जवाब देने से पहले अनुरोध के निष्पादन के लिए इंतजार नहीं करेगा।
संक्षेप में, यह एक साथ अनुरोधों को निष्पादित करता है, भले ही वे विभिन्न कार्यों में हों। नतीजतन, एसिंक्रोनस प्रोग्रामिंग के साथ विकसित एक एप्लिकेशन केवल एक बार अपनी पूरी सामग्री लोड करता है।
इवेंट लूप में एक एकल थ्रेड कई अनुरोधों को संभालता है। इसलिए, एक अनुरोध की विफलता दूसरे को प्रभावित नहीं करती है।
क्योंकि एसिंक्रोनस लोडिंग गैर-अवरोधक है, इस सिद्धांत पर काम करने वाले वेब एप्लिकेशन एकल-पृष्ठ अनुप्रयोगों के समाप्त हो सकते हैं।
उदाहरण के लिए, सिंक्रोनस प्रोग्रामिंग के विपरीत, आपके फॉर्म को भरने और सबमिट करने के बाद, एक फ़ंक्शन इसे अन्य क्षेत्रों या पूरे उपयोगकर्ता इंटरफ़ेस को लॉक किए बिना अतुल्यकालिक रूप से भेजता है। इसलिए, आप अन्य फ़ॉर्म फ़ील्ड अपडेट कर सकते हैं और सबमिशन जारी होने के दौरान वेब ऐप पर अधिक अनुरोध कर सकते हैं।
नतीजतन, आपको अनुरोधों के लिए इंतजार नहीं करना पड़ेगा क्योंकि वे सभी एक ही लूप में चलते हैं। तो, तुल्यकालिक अनुप्रयोगों के विपरीत, अतुल्यकालिक एप्लिकेशन एक बेहतर उपयोगकर्ता अनुभव प्रदान करते हैं और समान रूप से तेज़ होते हैं।
सम्बंधित: लिनक्स पर Node.js के कई संस्करणों को कैसे स्थापित और प्रबंधित करें
यहाँ एक उदाहरण दिया गया है कि नोड में एसिंक्रोनस कोड कैसा दिखता है।
var fs = आवश्यकता ('fs');
fs.readFile ('text.txt', फ़ंक्शन (इरेट, डेटा) {
अगर (गलती से) {
कंसोल.लॉग ('क्षमा करें, एक त्रुटि हुई');
}
सेटटाइमआउट () => {
कंसोल.लॉग (data.toString ())
}, 1000);
});
सेटटाइमआउट () => {
कंसोल.लॉग ('हैलो वर्ल्ड, मैं अन्य थ्रेड्स को ब्लॉक नहीं करता ...')
}, 500
);
पिछली सिंक्रोनस विधि के विपरीत, उपरोक्त एसिंक्रोनस कोड त्रुटि संदेशों को अनुकूलित करने के लिए कॉलबैक फ़ंक्शन का उपयोग करता है।
तुल्यकालिक और अतुल्यकालिक प्रोग्रामिंग के लिए भाषा समर्थन
अधिकांश सर्वर-साइड भाषाएं जैसे पायथन, सी #, जावा और पीएचपी कोड को भरोसेमंद रूप से निष्पादित करते हैं, इसलिए एक पंक्ति या संपूर्ण ब्लॉक सफल होने से पहले होने वाली सफलता पर निर्भर करता है। इसका मतलब है कि वे डिफ़ॉल्ट रूप से सभी सिंक्रोनस हैं।
हालाँकि इन सर्वर-साइड भाषाओं में से अधिकांश अब हाल की प्रगति के साथ अतुल्यकालिक कॉल का समर्थन करते हैं, लेकिन उनमें से कोई भी डिफ़ॉल्ट रूप से अतुल्यकालिक नहीं है।
सम्बंधित: सही वेब प्रोग्रामिंग भाषा कैसे चुनें
Node.js, एक उल्लेखनीय सर्वर-साइड जावास्क्रिप्ट फ्रेमवर्क, एकल-थ्रेडेड रनटाइम का एक उदाहरण है जो अतुल्यकालिक प्रोग्रामिंग का समर्थन करता है। Async / Await कार्य अब C # के साथ भी संभव हैं।
सिंक्रोनस और एसिंक्रोनस प्रोग्रामिंग के पेशेवरों और विपक्ष
हालांकि आप सोच सकते हैं कि अतुल्यकालिक प्रोग्रामिंग यहां जीतती है, दोनों विधियों में उनके पेशेवरों और विपक्ष हैं। इसलिए, उनमें से किसी एक का उपयोग करना आपकी प्राथमिकता या समस्या पर निर्भर करता है।
हालाँकि, वे दोनों विभिन्न तरीकों से एक दूसरे से बेहतर हैं। आइए इन प्रत्येक प्रोग्रामिंग विधियों के पेशेवरों और विपक्षों पर एक नज़र डालें।
अतुल्यकालिक प्रोग्रामिंग के पेशेवरों
- सभी स्क्रिप्ट एक समय में भरी हुई हैं। यह गति, जवाबदेही और बेहतर उपयोगकर्ता अनुभव के लिए समान है।
- यह पृष्ठ लोड विलंब को समाप्त करता है। इसलिए, नए अनुरोधों को निष्पादित करते समय बाद के पृष्ठ ताज़ा करने की कोई आवश्यकता नहीं है।
- आप एक समय में कई सुविधाओं का उपयोग कर सकते हैं, जबकि अन्य अनुरोध अभी भी चल रहे हैं।
- अतुल्यकालिक एप्लिकेशन अत्यधिक स्केलेबल हैं और काम करने के लिए कुछ संसाधनों की आवश्यकता होती है।
- यहां तक कि अगर एक अनुरोध प्रतिक्रिया के लिए धीमा है, तो यह दूसरों के प्रतिक्रिया समय को प्रभावित नहीं करता है।
- एक धागे की विफलता दूसरों को प्रदान करने से नहीं रोकती है।
- अंतर्निहित कॉलबैक आपको त्रुटि संदेशों को अनुकूलित करने देते हैं।
अतुल्यकालिक प्रोग्रामिंग के विपक्ष
- इसमें बहुत सी कॉलबैक और पुनरावर्ती कार्यों की आवश्यकता होती है जो विकास के दौरान बोझिल हो सकते हैं।
- यदि कॉलबैक का प्रभावी ढंग से उपयोग नहीं किया जाता है, तो ऐसा कोई तरीका नहीं है जिससे उपयोगकर्ता यह जान सके कि कोई अनुरोध विफल है या नहीं, विशेष रूप से POST अनुरोध करते समय।
- शुरुआती पेज रेंडर में लेटेंसी आपके अनुभव को प्रभावित कर सकती है।
- वेब एप्लिकेशन जो अतुल्यकालिक लोडिंग का उपयोग करते हैं, Google और बिंग जैसे खोज इंजनों के लिए क्रॉल करना मुश्किल हो सकता है।
- अतुल्यकालिक स्क्रिप्टिंग को कुछ प्रोग्रामिंग भाषाओं में लागू करना मुश्किल हो सकता है।
- कोड गन्दा हो सकता है और डिबग करना मुश्किल है।
सिंक्रोनस प्रोग्रामिंग के पेशेवरों
- इसके लिए कम कोडिंग की जरूरत होती है और यह सभी प्रोग्रामिंग भाषाओं द्वारा समर्थित है।
- यहां तक कि अगर अनुरोध विफलताओं के लिए कोई अनुकूलित कॉलबैक नहीं हैं, तो यह आपके लिए तुरंत स्पष्ट है क्योंकि क्लाइंट (ब्राउज़र) डिफ़ॉल्ट रूप से ऐसी त्रुटियों को संभालता है।
- सीपीयू कार्यों को निष्पादित करने के लिए यह बेहतर है।
- खोज इंजन को क्रॉल करने के लिए आसान तुल्यकालिक वेब पेज मिलते हैं।
- सरल अनुरोध करने के लिए आदर्श।
सिंक्रोनस प्रोग्रामिंग के विपक्ष
- लोड समय धीमा हो सकता है।
- कोई अंतर्निहित कॉलबैक विधियाँ नहीं हैं।
- जब एक धागा बंद होता है, तो दूसरे भी अवरुद्ध हो जाते हैं।
- एक बार में कई ऑपरेशन निष्पादित करने में असमर्थता उपयोगकर्ता अनुभव को कम कर सकती है।
- एक बार अनुरोध विफल हो जाने पर, पूरा कार्यक्रम भी अनुत्तरदायी हो जाता है।
- यदि अनुरोध भारी हो जाते हैं, तो अधिक थ्रेड को संभालने के लिए भारी मात्रा में संसाधनों की आवश्यकता हो सकती है।
तुल्यकालिक या अतुल्यकालिक प्रोग्रामिंग: कौन सा बेहतर है?
जबकि सिंक्रोनस प्रोग्रामिंग धीमी और अतुल्यकालिक स्क्रिप्टिंग स्ट्राइक हो सकती है, किसी भी परिदृश्य के लिए उपयुक्त विधि को पहचानना महत्वपूर्ण है। कभी-कभी, वे एक साथ काम भी करते हैं।
CRUD जैसे बैकएंड ऑपरेशन (बनाएं, पढ़ें, अपडेट और डिलीट) डिफ़ॉल्ट रूप से सिंक्रोनस हैं। लेकिन आप सीआरयूएन ऑपरेशंस को एसिंक्रोनस रूप से निष्पादित करने का निर्णय भी ले सकते हैं। आपको केवल अपने बैकएंड कोड से जुड़ने के लिए अपनी फ्रंटेंड स्क्रिप्ट को ट्वीक करना होगा। उदाहरण के लिए, आप डेटाबेस से डेटा को सिंक्रोनाइज़ कर सकते हैं। फिर आप इसे अतुल्यकालिक स्क्रिप्टिंग वाले उपयोगकर्ताओं के लिए प्रस्तुत कर सकते हैं।
इसके अतिरिक्त, साधारण फ़्रंटएंड ऐप बनाने के लिए एसिंक्रोनस प्रोग्रामिंग का उपयोग करना या सीपीयू संचालन को निष्पादित करना जो कम संसाधनों की आवश्यकता होती है, आदर्श नहीं हो सकता है।
वेब विकास सीखना कोडिंग को समझने का एक शानदार तरीका है, लेकिन आपको कहां से शुरू करना चाहिए: फ्रंट-एंड या बैक-एंड वेब डेवलपमेंट?
आगे पढ़िए
- प्रोग्रामिंग
- प्रोग्रामिंग
Idowu कुछ भी स्मार्ट तकनीक और उत्पादकता के बारे में भावुक है। अपने खाली समय में, वह कोडिंग के साथ खेलता है और जब वह ऊब जाता है, तो शतरंज की बिसात पर चला जाता है, लेकिन वह एक समय में एक बार दिनचर्या से अलग होना भी पसंद करता है। आधुनिक तकनीक के इर्द-गिर्द लोगों को दिखाने का उनका जुनून उन्हें और अधिक लिखने के लिए प्रेरित करता है।
हमारे न्यूज़लेटर की सदस्यता
टेक टिप्स, रिव्यू, फ्री ईबुक और एक्सक्लूसिव डील्स के लिए हमारे न्यूज़लेटर से जुड़ें!
एक और क़दम…!
कृपया हमें आपके द्वारा भेजे गए ईमेल में अपने ईमेल पते की पुष्टि करें।