2009-06-02 11 views
42

मेरे पास [WebMethod] विशेषता के साथ चिह्नित विधि के साथ एक .NET 3.5 एएसपीएक्स स्थान है। मैं इसे jQuery के साथ बुला रहा हूं, दोनों दिशाओं में JSON भेज रहा हूं। यह सब महान काम करता है। मेरा सवाल यह है कि, किसी विधि पर लागू होने पर [ScriptMethod] क्या करता है? मैंने यह कोशिश की है और ऐसा लगता है कि एक ही परिणाम मिलता है। ScriptMethod और WebMethod समान और अदलाबदल योग्य हैं, या कोई कार्यक्षमता और/या ओवरहेड प्रदान करता है जो दूसरा नहीं करता है? आम तौर पर, मैं खुद को वेब सेवाओं को लागू करने के लिए उपलब्ध सभी विकल्पों के साथ भ्रमित हूं और मैं जानना चाहता हूं कि प्रत्येक के लिए पेशेवर और विपक्ष क्या हैं।WebMethod बनाम ScriptMethod

+2

महान प्रश्न, और एसओ में आपका स्वागत है! – JoshJordan

उत्तर

2

ScriptMethodAttribute विशेषता वैकल्पिक है। (हालांकि, क्लाइंट स्क्रिप्ट से बुलाए जाने वाले तरीकों में System.Web.Services .. ::। WebMethodAttribute विशेषता लागू होनी चाहिए।)। यदि स्क्रिप्ट MethodAttribute के साथ कोई विधि चिह्नित नहीं है, तो HTTP POST कमांड का उपयोग करके विधि को कॉल किया जाएगा और प्रतिक्रिया JSON के रूप में क्रमबद्ध की जाएगी। आप स्क्रिप्ट से इस सेटिंग को ओवरराइड नहीं कर सकते हैं।

से - http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.aspx

संपादित करें: WebMethod और ScriptMethod विशेषताओं प्रतिस्पर्धा नहीं कर रहे। जैसा कि उपरोक्त पैरा कहते हैं, स्क्रिप्ट विधि एक अतिरिक्त एनोटेशन हो सकती है।

+0

WebMethod = HTTP पोस्ट के साथ कॉल करें ... यदि आप ScriptMethod जोड़ते हैं तो और क्या है? दोनों क्लाइंट से बुलाया जा सकता है ... मुझे यह नहीं मिला। –

29

आप निम्न 2 परिदृश्यों में ScriptMethod विशेषता का उपयोग करते हैं।

  1. आप jquery या किसी अन्य AJAX अनुरोध तंत्र का उपयोग कर रहे हैं, लेकिन आप अनुरोध चाहते हैं कि कोई पोस्ट न हो।
  2. आप जावास्क्रिप्ट में एक एक्सएमएल फॉर्मेटेड प्रतिक्रिया प्राप्त करना चाहते हैं।

यदि आपके पास उपरोक्त आवश्यकताओं में से कोई एक नहीं है; आपको केवल एक AJAX अनुरोध का उपयोग कर JSON प्रतिक्रिया की आवश्यकता है, तो आप बस WebMethod का उपयोग कर सकते हैं।

यहां अभी भी एक और भ्रमित तत्व है, जब आप ScriptService विशेषता का उपयोग करते हैं? इसका उपयोग तब किया जाता है जब आप माइक्रोसॉफ्ट अजाक्स क्लाइंट स्क्रिप्ट फ्रेमवर्क का उपयोग कर रहे हैं, यह गुण क्लाइंट पर प्रॉक्सी ऑब्जेक्ट्स उत्पन्न करने के लिए सर्वर को बताते हैं ताकि आप सामान्य ऑब्जेक्ट की तरह फ़ंक्शन को कॉल कर सकें। var MyRemoteObject = new RemoteObject();MyRemoteObject.getMessage(....) और जब भी आप ScriptService विशेषता का उपयोग करते हैं तो आपको केवल उपरोक्त परिदृश्यों में ScriptMethod विशेषता जोड़ने की आवश्यकता नहीं है।

यह शुरुआत में मुझे भ्रमित कर रहा था क्योंकि मैंने सोचा था कि ScriptService और ScriptMethod विशेषताएँ WebService और WebMethod विशेषताओं की तरह मिलकर काम करती हैं।

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