2009-08-25 15 views
14

मेरी समझ के आधार पर, दोनों अनिवार्य रूप से वही काम करते हैं (हमें जेएस से सर्वर साइड विधि निष्पादित करने देता है)। क्या कोई अंतर है?क्लाइंट कॉलबैक और अजाक्स पेज विधियों के बीच अंतर - एएसपी.नेट

इसके अलावा, अजाक्स पेज विधि या तो JQuery का उपयोग करके या ScriptManager का उपयोग करके कार्यान्वित किया जा सकता है। कौन सा पसंदीदा है और क्यों ??

** BOUNTY: प्रश्न की स्पष्ट व्याख्या प्राप्त करने के लिए एक बक्षीस जोड़ना। धन्यवाद **

उत्तर

22

helps.- मूल रूप से, Client Callbacks और अजाक्स पृष्ठ के तरीके ही बात कर रहे आशा है। वे कुछ यूआरएल में एक अनुरोध (आमतौर पर एसिंक्रोनस) भेजने के लिए XMLHttpRequest ऑब्जेक्ट का उपयोग करते हैं, उस अनुरोध के परिणाम प्राप्त करें, फिर आपके द्वारा प्रदान की गई कॉलबैक विधि को निष्पादित करें (कॉलबैक लोअरकेस सी) के परिणाम पास करने के परिणाम अपनी विधि के लिए अनुरोध करें।

कहा करने के बाद कि, वहाँ दो दृष्टिकोणों के बीच एक बड़ा अंतर है:

  • पृष्ठ तरीके अपने पृष्ठ पर स्थिर तरीके के रूप में लागू किया जाता है। आपकी पृष्ठ कक्षा इन तरीकों के लिए एक सुविधाजनक कंटेनर है, जिसे वास्तव में कहीं भी होस्ट किया जा सकता है (एक वेब सेवा, एक कस्टम HttpHandler, आदि)। चूंकि कोई भी उदाहरण कभी भी नहीं बनाया जा रहा है, इसलिए ग्राहक को ViewState डेटा भेजने की आवश्यकता नहीं है और Asp.Net को Page की जीवन चक्र के माध्यम से चलाने की आवश्यकता नहीं है। फ्लिप पक्ष यह है कि आपके पास Page कक्षा के उदाहरण विधियों और गुणों तक पहुंच नहीं है। हालांकि, कई मामलों में आप स्थिर तरीकों में इंस्टेंस विधियों को दोबारा बनाकर इस पर काम कर सकते हैं। (अधिक जानकारी के लिए this article देखें।)

  • ग्राहक कॉलबैक आपके पृष्ठ पर उदाहरण विधियों के रूप में लागू किए गए हैं। उनके पास आपके पृष्ठ पर अन्य उदाहरण विधियों तक पहुंच है, जिसमें ViewState में संग्रहीत सामग्री शामिल है। यह सुविधाजनक है, लेकिन कीमत पर आता है: Page उदाहरण बनाने के लिए, क्लाइंट को सर्वर पर अपेक्षाकृत बड़ी मात्रा में डेटा भेजना होगा और पृष्ठ जीवन चक्र के उचित हिस्से के माध्यम से भागना होगा। (। This article has a nice diagram दिखा जो भागों)

इसके अलावा, उन्हें स्थापित करने की लागत काफ़ी भिन्न होता है और ग्राहकों के लिए उन्हें अलग ढंग से उपयोग करें:

  • ग्राहक कॉलबैक भी पर्याप्त मात्रा में आवश्यकता होती है idiosyncratic मचान कोड जो अंततः Asp.Net के साथ मिलकर है (जैसा ऊपर दिए गए लिंक में दिखाया गया है)। को अब हमारे पास जितना आसान विकल्प है, मैं यह कहने के लिए प्रेरित हूं कि यह तकनीक अप्रचलित है (नए विकास के लिए)।

  • कॉलिंग पेज ScriptManager का उपयोग कर तरीकों क्लाइंट कॉलबैक से कम सेटअप की आवश्यकता है: आप बस अपनी पृष्ठ पर एक ScriptManager पॉप है, सेट EnablePageMethods = true, तो PageMethods प्रॉक्सी प्रॉक्सी के माध्यम से अपने पृष्ठ के तरीकों का उपयोग।

  • का उपयोग कर पेज विधियों को कॉल करना jQuery केवल आपको jQuery लाइब्रेरी (और निश्चित रूप से jQuery के साथ परिचित) को लिंक करने की आवश्यकता है।

मैं इसे सर्वर ढांचे से स्वतंत्र है और कार्यान्वयन विवरण के सिर्फ सही राशि को उजागर करता है, क्योंकि वह पृष्ठ तरीकों का उपयोग करने में jQuery का उपयोग करना पसंद है, लेकिन यह वास्तव में स्वाद का मामला है। यदि आप ScriptManager के साथ जाते हैं, तो इसकी प्रॉक्सी आंखों पर पेज विधि को थोड़ा आसान बनाती है, जो कुछ अधिक महत्वपूर्ण मान सकती हैं।

+0

उत्तर के लिए धन्यवाद। क्या पृष्ठ विधि गैर स्थैतिक हो सकती हैं? मैंने पहले कॉलबैक का उपयोग किया है और उनके लिए स्थैतिक होने की कोई आवश्यकता नहीं थी। इस तरह, मैं बेस क्लास विधियों तक पहुंच सकता था। पेज के तरीके में, मैं नहीं कर सकता। – Nick

+0

मेरी खुशी! पृष्ठ विधियों के लिए, स्थिर होना चाहिए क्योंकि पृष्ठ विधि निष्पादित करते समय Asp.Net आपके पृष्ठ वर्ग के उदाहरण नहीं बनायेगा (और नहीं कर सकता)। यह आलेख यह समझाने का एक अच्छा काम करता है कि क्यों (और यह आमतौर पर वांछनीय क्यों है): http://encosia.com/2008/04/16/why-do-aspnet-ajax-page-methods-have-to-be-static /। ऐसा कहकर, यह एक बड़ी निगरानी थी कि मेरे जवाब में चर्चा न करें। मैं उस जानकारी को शामिल करने के लिए उत्तर अपडेट करूंगा। –

+0

इच्छा है कि मैं उस जवाब को दोहरा सकता हूं। धन्यवाद जेफ! –

4

मैं कहूंगा कि मतभेद हैं, लेकिन ऐसा कहेंगे कि आप इसे अधिक आरामदायक महसूस करते हैं।

मैंने दोनों दृष्टिकोणों का उपयोग किया है, और पृष्ठ से jQuery कॉल होने पर आम तौर पर तेज़ होता है। मैं एक एशक्स हैंडलर लिखता हूं जो jquery कॉल की ज़रूरतों को पूरा करता है (डेटाबेस से पूछताछ करता है, कुछ संसाधित करता है, आदि) और इसे पृष्ठ से कॉल करें। मैं एक jQuery कॉल के लिए एएसपीएक्स पेज का उपयोग नहीं करता, क्योंकि आप बहुत सारी जानकारी भेज रहे हैं जिसकी आपको आवश्यकता नहीं होगी। Ajax.Net कॉल का उपयोग करने का अंतर/लाभ यह है कि आपको चीजों को संसाधित करने के लिए एक और पृष्ठ बनाने की आवश्यकता नहीं है, आप इसे करने के लिए उसी पृष्ठ ईवेंट का उपयोग कर सकते हैं।

उदाहरण के लिए, यदि आपको पहले मूल्य पर चयनित मूल्य का उपयोग करके दूसरी ड्रॉप डाउन सूची भरनी है, तो आप पेजएक्स में चयनित इंडेक्स चेंज किए गए को चुनने के लिए Ajax.Net का उपयोग कर सकते हैं और जब यह पेज_लोड, चयनित इंडेक्स चेंज किया जाता है, पेज_PreRender और इतने पर। घटना विधि में आप डीबी से पूछेंगे और दूसरा डीडीएल भरेंगे।

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

यदि आप एएसपी.Net, ASHX हैंडलर और jQuery के बारे में अधिक जानना चाहते हैं, तो आप इसके बारे में post पढ़ सकते हैं।

यह

0

वे अनिवार्य रूप से वही हैं। दोनों:

  1. सेटअप आप के लिए एक वेब सेवा कि नियंत्रण के लिए जावास्क्रिप्ट कॉल कर सकते हैं।
  2. पेज लाइफसाइकिल को शामिल किए बिना एसिंक्रोनस प्रतिक्रिया ई प्रदान करें।

वे अलग हैं:

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

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

स्क्रिप्ट मैनेजर बनाम JQuery प्रश्न के लिए, मेरी भावना यहां स्वाद किसी भी चीज़ से अधिक है। मुझे JQuery के सिंटैक्स पसंद हैं और मुझे लगता है कि यह बेहतर प्रदर्शन करता है, लेकिन चीजों की भव्य योजना में सबसे महंगा बात XmlHttpRequest है ... उसके बाद जावास्क्रिप्ट का निष्पादन उसके आगे के अंतर में महत्वहीन होने की संभावना है।

संबंधित मुद्दे