पोस्टबैक और कॉलबैक के बीच अंतर


116

मैं इस शब्द को ' कॉलबैक ' और ' पोस्टबैक ' के चारों ओर उछाला जाता रहा।
दो में क्या अंतर है?

ASP.NET पृष्ठों के लिए पोस्टबैक बहुत विशिष्ट है?

जवाबों:


204

पोस्टबैक तब होता है जब पृष्ठ पर डेटा (संपूर्ण पृष्ठ) क्लाइंट से सर्वर पर पोस्ट किया जाता हैडेटा को सर्वर पर वापस पोस्ट किया जाता है , और इस तरह पृष्ठ ताज़ा (पुनः डिज़ाइन) किया जाता है ... इसके बारे में सोचें ' सर्वर पूरे पेज (asp.net) डेटा से भरा भेजने के रूप में ।'

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

Asp.Net के साथ, कॉलबैक लागू होने पर , पोस्टबैक के विपरीत, ViewState ताज़ा नहीं होता है

पूरे पृष्ठ को ASP.Net के साथ पोस्ट करने का कारण यह है कि ASP.Net <form>एक पोस्ट विधि के साथ पूरे पृष्ठ को संलग्न करता है , और इसलिए जब पृष्ठ में एक सबमिट बटन पर क्लिक किया जाता है, तो फ़ॉर्म सर्वर के साथ सभी को भेजा जाता है फ़ील्ड जो फ़ॉर्म में हैं ... मूल रूप से संपूर्ण पृष्ठ स्वयं है।

यदि आप फायरबग (फ़ायरफ़ॉक्स के लिए) का उपयोग कर रहे हैं , तो आप वास्तव में कॉलबैक को सर्वर में इनवॉइस में देख सकते हैं Console। इस तरह, आप देखेंगे कि सर्वर ( ) को क्या विशिष्ट डेटा भेजा जा रहा है Requestऔर यह भी कि सर्वर ने आपको वापस भेजा हुआ डेटा ( Response)।


नीचे दी गई छवि एक पोस्टबैक और एक ASP.NET आधारित वेबसाइट में एक कॉलबैक दोनों के पृष्ठ जीवन चक्र को दर्शाती है:

ASP.NET पृष्ठ जीवन चक्र
(स्रोत: esri.com )


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

1
यह तब होता है जब एक फ़ंक्शन का पॉइंटर किसी अन्य फ़ंक्शन को पास हो जाता है, कि वह बाद में आह्वान करेगा
एंड्रियास ग्रीच


18

पोस्टबैक तब होता है जब क्लाइंट से सर्वर के लिए उसी पेज के लिए भेजा जाता है, जिस समय उपयोगकर्ता देख रहा होता है। जब कोई पोस्टबैक होता है, तो पूरा पृष्ठ रीफ्रेश हो जाता है और आप ब्राउज़र के निचले भाग में प्रगति बार पर विशिष्ट प्रगति देख सकते हैं।

आम तौर पर AJAX के साथ उपयोग किया जाने वाला कॉलबैक, तब होता है जब क्लाइंट से सर्वर के लिए एक अनुरोध भेजा जाता है जिसके लिए पृष्ठ ताज़ा नहीं किया जाता है, इसका केवल एक हिस्सा ब्राउज़र पर किसी भी झिलमिलाहट के बिना अपडेट किया जाता है।


5

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


4

इस चर्चा की एक बहुत ASP.NET gobbledygook भाषा है ....

इसका जवाब है हाँ। पोस्टबैक Microsoft के ASP.NET के लिए एक "टर्म" है, लेकिन याद रखें, Microsoft जैसे विक्रेता इन प्रक्रियाओं के अपने स्वयं के संस्करणों को उनके स्वयं के कार्यान्वयन के चारों ओर लपेटते हैं, हम सभी को भ्रमित करते हैं कि Http / Html दुनिया में वास्तव में क्या है।

POSTBACK का उनका संस्करण मूल रूप से एक पारंपरिक HTTP POST अनुरोध है जो मूल सर्वर पर वापस भेजा जाता है। लेकिन ASP.NET में वे इसे एक वेब पेज के एक छोटे से हिस्से में पारंपरिक प्रपत्र नियंत्रण के बजाय पूरे वेब पेज के आसपास एक विशाल FORM HTML तत्व टैग (POST विधि विशेषता के साथ) चिपकाकर करते हैं। वे ऐसा इसलिए करते हैं क्योंकि वे अपने पृष्ठ और उसके नियंत्रणों की "स्थिति" बनाए रखने के लिए HTTP विनिर्देशन का उपयोग कर रहे हैं, और यह सुनिश्चित करने के लिए कि संपूर्ण पृष्ठ, यहां तक ​​कि पारंपरिक गैर-प्रपत्र फ़ील्ड मार्कअप भी वापस आ जाता है।

दुर्भाग्य से, यह तार पर भारी डेटा की एक बड़ी मात्रा भेजता है जैसे कि पृष्ठ में उनकी VIEWSTATE और उसकी बहन POSTBACK को बैंडविड्थ की बर्बादी और वेब पेज राज्य को लागू करने के एक सुस्त तरीके के रूप में कई द्वारा देखा गया है। मैं आपको दिखा सकता हूं कि सबसे आधुनिक ब्राउज़र और वेबसाइट, यदि कैच करने योग्य CSS और सुसंगत HTML मार्कअप का उपयोग करके डिज़ाइन किया गया है, तो ब्राउज़रों के मूल HTML कैश का उपयोग करके पृष्ठ की स्थिति को काफी स्वाभाविक रूप से वापस कर देगा। अर्थात पूर्ण POSTBACK अक्सर अनावश्यक होता है।

कॉलबैक सिर्फ जावास्क्रिप्ट है। इसका सिर्फ ECMASCRIPT सर्कस ट्रिक ASP.NET स्टोर करता है जिसे वे अपने AJAX API को विशाल जावास्क्रिप्ट लाइब्रेरी में कहते हैं जो आपके ब्राउज़र को सर्वर से डाउनलोड करता है, और जो ASP.NET डेवलपर्स अनजाने में अपने वेब पेजों में पूर्ण POSTBACK में वेब पेज में परिवर्तन को ट्रिगर करने के लिए पैक करते हैं। AJAX के लिए ASP.NET API केवल क्लाइंट-साइड पर यह सब बड़े पैमाने पर जावास्क्रिप्ट बनाता है और जो ब्राउज़र में ट्रिगर हो जाता है जब उपयोगकर्ता कुछ बदलता है, या कुछ पर रोल करता है, या ब्राउज़र में कुछ क्लिक करता है जो पारंपरिक जावास्क्रिप्ट ब्राउज़र डोम घटनाओं को ट्रिगर करता है, जो फिर JSON या अन्य डेटा का एक विशाल भार संसाधित करने के लिए सर्वर पर वापस भेज देता है। इसके बाद ब्राउज़र में मेमोरी में Javascipted पुस्तकालयों और वस्तुओं द्वारा वापस आ जाता है और स्वीकार कर लिया जाता है, और उपयोगकर्ताओं के वेब पेज और मार्कअप के कुछ हिस्सों को बदल देता है।

इसके उपयोगकर्ता और ब्राउज़र के 5-10% जावास्क्रिप्ट को अक्षम कर दिया गया है, इसलिए यह सभी JSON और AJAX उन लोगों के लिए क्रैश और जल जाएगा। यानी कॉलबैक काम नहीं करेगा।

यही पर्दे के पीछे चलता है। इसमें से ज्यादातर ओवरकिल है, अगर आप मुझसे पूछें। और इसलिए ASP.NET में वेब कंट्रोल मॉडल की आलोचना की गई है।

यदि आपने ASP.NET को एक सेकंड के लिए छोड़ दिया है, तो आप एक HTML टेक्स्ट पेज में एक सिंगल टेक्स्टबॉक्स और बटन के साथ अपने आप को एक साधारण FORM फ़ील्ड लिख सकते हैं और इसे दबा सकते हैं और इसे सर्वर पर पोस्ट कर सकते हैं, बिल्कुल ASP.NET पेज की तरह लेकिन तेज और सरल। यही असली POSTBACK है। ब्राउज़र स्वाभाविक रूप से सर्वर को ऐसा करने के लिए आवश्यक POST HTTP हैडर भेजता है, लेकिन शेष पेज में HTML को कैश कर देता है, इसलिए यह अपने आप ही तेज़ बिजली प्रदान करता है।

CALLBACK के लिए आप बस उसी HTML पृष्ठ पर एक सरल जावास्क्रिप्ट / ECMAScript कोड जोड़ सकते हैं, जब उपयोगकर्ता किसी पाठ या बटन पर क्लिक करता है, या कोई प्रपत्र फ़ील्ड बदलता है, वेब पेज POST नहीं करता है, लेकिन आपके द्वारा देखे गए दृश्यों के पीछे जावास्क्रिप्ट को सर्वर तक कुछ भेजें। आप अपने स्वयं के जावास्क्रिप्ट, JSON, या पुस्तकालयों के माध्यम से कैसे संभालते हैं यह एक और सौदा है। लेकिन इसका जादू नहीं। बिना Javascipt या Javascript वाले लोगों के लिए, जिन्हें आपको बिना CALLBACK वाले पृष्ठ डिज़ाइन करने चाहिए और जब फ़ील्ड नियंत्रण या हाइपरलिंक पर क्लिक किया जाता है तो किसी भी परिवर्तन को कैश करें। कॉलबैक रूटीन पर पुनर्विचार करने का इसका एक कारण हालांकि अधिकांश आधुनिक उपयोगकर्ता-एजेंट अब ECMAScripted वेबसाइट रूटीन के लिए सेटअप हैं।

यही लोगों को भ्रमित करता है ...... ये बहुत बुनियादी HTTP अनुरोधों और जावास्क्रिप्ट चालों के विक्रेता कार्यान्वयन भाषा में स्पष्ट नहीं हो जाते हैं। यह तब लोगों को राक्षसी वेब अनुप्रयोगों का निर्माण करने का कारण बनता है जो यह सब अनावश्यक सामान करते हैं जो बहुत सरल कोडिंग को हल करेंगे।

मैं अभी भी ASP.NET का उपयोग और अनुशंसा करता हूं। यह एक लंबा रास्ता और एक महान प्रणाली है। लेकिन यह मदद करेगा कि अगर अधिक लोग इन रूपरेखाओं का उपयोग करने से पहले वे क्या करते हैं, की मूल बातें समझें और उन्हें बेहतर बनाया जा सके तो उन्हें सुधारने के लिए बहुत आसान हो सकता है यदि आप देखते हैं कि वास्तव में हुड के नीचे क्या चल रहा है।


0

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

जब आप अन्य पेज के लिए अनुरोध करते हैं तो कॉलबैक सर्वर द्वारा उपयोग किया जाता है


0

मूल रूप से एक पोस्टबैक भी एक राउंड ट्रिप है, जब उस समय एक पोस्टबैक निष्पादित किया जाता है, तो यह उस विशेष विधि को कॉल करता है जिसे राउंड ट्रिप के रूप में जाना जाता है..पोस्टबैक सर्वर साइड पर है जहां राउंड ट्रिप क्लाइंट साइड पर है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.