AJAX

2010-03-12 11 views
5
  1. के साथ एक WCF कॉल करना यह आवश्यक एक RESTful सेवा का उपयोग करने के लिए एक WCF सेवा करने के लिए एक ajax कॉल करने के लिए सक्षम होने के लिए है (उदाहरण के लिए: ठेके ऑपरेशन पर WebInvoke विशेषता का उपयोग करके)
  2. सेवा होस्ट पर webHttp बाध्यकारी जोड़कर एक सेवा को फिर से बनाया जा सकता है, क्या मेजबान के पास अन्य अंतराल भी हो सकते हैं? (wsHttp या netTcp)
  3. यह है आवश्यक कि aspNetCompatibilityEnabled एक सेवा है कि webHttp बाइंडिंग के लिए सही पर सेट किया जा (और कर सकते हैं अन्य अंतिमबिंदुओं लिए इस सेटिंग को एक समय में होना)
  4. मैं समझता हूँ कि मैं दोनों के लिए JQuery और ScriptManager उपयोग कर सकते हैं क्लाइंट पर डब्ल्यूसीएफ कॉल करना। मुझे दूसरे पर एक का उपयोग क्यों करना चाहिए?

उत्तर

4

जवाब

  1. सं
    AJAX के आम तौर पर सरल HTTP GET ("आराम") अनुरोध भेजने के लिए प्रयोग किया जाता है। ऐसा नहीं होना चाहिए। आप एक एसओएपी लिफाफे का उपयोग करके एक पेलोड भी प्रारूपित कर सकते हैं, और इसे एंडपॉइंट पर पोस्ट कर सकते हैं। उस स्थिति में डब्ल्यूसीएफ सेवा को कम से कम wsHttp या मूल एचटीपी बाइंडिंग होना होगा। यहां an example of using VBScript to create and send a SOAP request है, लेकिन आप जावास्क्रिप्ट में ऐसा ही कर सकते हैं। आप अधिक उन्नत एसओएपी एक्सटेंशन का उपयोग नहीं कर सकते हैं, जैसे डब्ल्यूएस-सिक्योरिटी, एक्सएमएल डिगसिग, और इसी तरह। खैर, आप कर सकते हैं लेकिन यह अव्यवहारिक होगा। उदाहरण के लिए, मुझे जावास्क्रिप्ट में किसी भी XML कैनोनिकललाइजेशन लाइब्रेरी के बारे में पता नहीं है, जो डब्ल्यूएस-सुरक्षा या डिजिटल हस्ताक्षर करने के लिए आवश्यक है। 17 समान बाधाएं हैं। परिणाम: जावास्क्रिप्ट से कॉल करते समय आप अधिक उन्नत SOAP एक्सटेंशन का उपयोग नहीं कर सकते हैं।

    यदि आप jQuery AJAX का उपयोग करते हैं, तो आपको SOAPAction शीर्षलेख सेट करने के लिए AJAX अनुरोध पर beforeSend कॉलबैक का उपयोग करना होगा।

    ऐसा कहकर, जावास्क्रिप्ट प्रोग्राम में जेसन को संसाधित करना बहुत आसान है, यह एक XML दस्तावेज़ के DOM को चलाना है। दूसरे शब्दों में, आप एसओएपी के बजाय जावास्क्रिप्ट से डब्ल्यूसीएफ से कनेक्ट करते समय जेएसओएन/आरईएसटी का उपयोग करना बेहतर कर रहे हैं। कभी-कभी यह एक विकल्प नहीं है, मुझे लगता है।

  2. हाँ
    एक WCF सेवा कई अंतिमबिंदुओं है और वे जैसे HTTP, net.tcp, net.pipe, या net.msmq रूप में एक ही या अलग परिवहन पर सुन सकते हैं कर सकते हैं।

  3. सं। aspNetCompatibilityEnabled बस सर्वर पर कुछ एएसएमएक्स जैसी सुविधाओं को सक्षम बनाता है। यह इस बात को प्रभावित करता है कि सेवा कैसे डिज़ाइन की गई है, और यह संदेश हस्ताक्षर से स्वतंत्र है। यह गैर-HTTP प्रोटोकॉल के उपयोग को रोकता है। इस पर अधिक जानकारी के लिए, Wenlong Dong's article देखें।

  4. क्लाइंट पर किस ढांचे का उपयोग करना है - जो आसान है? मुझे ScriptManager के साथ अनुभव नहीं है, लेकिन निर्णय मानदंड बहुत सरल है। jQuery बस ठीक काम करता है, और यदि आप पहले से ही jQuery का उपयोग करते हैं तो उचित है। यदि आपके पास jQuery नहीं है या नहीं है, तो आप SOML या REST अनुरोध भेजने के लिए XmlHttpRequest का उपयोग कर सकते हैं। अगर वे किसी भी तरह अनुचित हैं, तो कुछ और उपयोग करें।

+0

@Cheeso - अगर मैं ग्राहक पर JQuery का प्रयोग कर एक AJAX कॉल करने के लिए, मैं इस सवाल का जवाब मान के बाद से मैं अब प्रतिक्रिया के रूप में Json का उपयोग करने के लिए (1) हाँ हो जाएगा, और यह किया जाना जा सकता है वेबगेट विशेषता को लागू करके और जेसन को RequestFormat बदलकर?क्या यह अनिवार्य रूप से इस सेवा को एक अस्थिर में बदल नहीं देगा? – DotnetDude

+0

नहीं। आप jQuery AJAX का उपयोग कर सकते हैं और डेटा टाइप प्रकार = 'xml' निर्दिष्ट कर सकते हैं, ताकि सर्वर से आप जिस डेटा की अपेक्षा कर रहे हैं उसे इंगित कर सकें। यदि यह XML है तो प्रतिक्रिया स्वचालित रूप से jQuery द्वारा जेसन मान के रूप में मूल्यांकन नहीं की जाएगी। – Cheeso

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