2010-08-27 16 views
6

मुझे एएसपी.NET एप्लिकेशन से एक वेब सेवा को अजीब तरह से कॉल करने की आवश्यकता है। एएसपीएक्स को वेब सेवा से जवाब की आवश्यकता नहीं है। यह सिर्फ एक साधारण अधिसूचना है।एएसपी.NET एप्लिकेशन से एसिंक्रोनिस से वेब सेवा कैसे कॉल करें?

मैं वेब सेवा स्टब और <%@Page Async="True" %> से ...Async() विधि का उपयोग कर रहा हूं।

ws.HelloWorldAsync(); 

मेरी समस्या: वेब पेज अनुरोध वेब सेवा प्रतिक्रिया की प्रतीक्षा कर रहा है।

इस समस्या को हल करने के लिए कैसे करें? वेब सेवा डाउन होने पर या ओवरलोड होने पर किसी भी संसाधन रिसाव से कैसे बचें?

उत्तर

0

अपने परिदृश्य में आप थ्रेडपूल थ्रेडपूल.क्यूयूयूसर वर्कइटम (...) पूल किए गए थ्रेड में वेब सेवा कॉल करने के लिए उपयोग कर सकते हैं।

0

मैंने पहले ऐसा करने के लिए सरल धागे का उपयोग किया है। पूर्व:

Thread t = new Thread(delegate() 
{ 
    ws.HelloWorld(); 
}); 
t.Start(); 

विधि वापस लौटने के बाद थ्रेड जारी रहेगा। चारों ओर देखकर, ऐसा लगता है कि थ्रेडपूल दृष्टिकोण isn't always recommended

+0

मुझे समझ में आया कि थ्रेडपूल का उपयोग करके एएसपी.नेट निष्पादन में हस्तक्षेप होगा। लेकिन कई धागे बनाने से पूरे वेब एप्लिकेशन के प्रदर्शन में कमी आएगी। – Jorge

0

एक नया धागा शुरू करना शायद सबसे आसान समाधान है क्योंकि आप परिणाम की अधिसूचना प्राप्त करने की परवाह नहीं करते हैं।

new Thread(() => ws.HelloWorld()).Start 
1

एक वेब सेवा प्रॉक्सी आमतौर पर एक प्रारंभ और समाप्ति विधि भी होती है। आप इनका उपयोग कर सकते हैं। नीचे दिया गया उदाहरण दिखाता है कि आप प्रारंभ विधि को कैसे कॉल कर सकते हैं और कॉल को पूरा करने के लिए कॉलबैक का उपयोग कैसे कर सकते हैं। MakeWebServiceAsynCall को कॉल सीधे वापस आ जाएगा। उपयोग कथन यह सुनिश्चित करेगा कि ऑब्जेक्ट सुरक्षित रूप से निपटाया गया हो।

void MakeWebServiceAsynCall() 
    { 
     WebServiceProxy proxy = new WebServiceProxy(); 
     proxy.BeginHelloWorld(OnCompleted, proxy); 
    } 
    void OnCompleted(IAsyncResult result) 
    { 
     try 
     { 
      using (WebServiceProxy proxy = (WebServiceProxy)result.AsyncState) 
       proxy.EndHelloWorld(result); 
     } 
     catch (Exception ex) 
     { 
      // handle as required 
     } 
    } 

यदि आपको यह जानना है कि कॉल सफल था या नहीं, तो आपको परिणाम की प्रतीक्षा करनी होगी।

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