2010-08-27 25 views
6

Bir ASP.NET uygulamasından bir web hizmetini eşzamansız olarak çağırmalıyım. Aspx'in web servisinden cevap almasına gerek yoktur. Bu sadece basit bir bildirim.Bir ASP.NET uygulamasından bir web hizmeti eşzamansız olarak nasıl çağrılır?

Web service stub ve <%@Page Async="True" %>'dan ...Async() yöntemini kullanıyorum.

ws.HelloWorldAsync(); 

Sorunum: web sayfası isteği web servis yanıtını bekliyor.

Bu sorun nasıl çözülür? Web hizmeti kapalı olduğunda veya aşırı yüklenme olduğunda kaynak sızıntısından nasıl kaçınılır? senaryonuz Eğer toplanmış dizisindeki web hizmetini çağırmak ThreadPool'da ThreadPool.QueueUserWorkItem (...) kullanabilir yılında

cevap

0

Bunu yapmak için basit iplikler kullanmıştım. Örneğin: Yöntem döndükten sonra iş parçacığı çalışmaya devam edecektir. Etrafa, o threadpool Sonucun bildirim almaya umurumda değil çünkü yeni bir iş parçacığı muhtemelen en kolay çözümdür başlayarak isn't always recommended

+0

ThreadPool'u kullanarak ASP.NET uygulamasına müdahale edeceğini anladım. Ancak birçok iş parçacığı oluşturmak, tüm web uygulamasının performansını azaltacaktır. – Jorge

0

yaklaşım gibi görünüyor. Bir Web Hizmeti vekilinin normalde Başlama ve Sonlama yöntemine de sahip olduğu belirtilir.

new Thread(() => ws.HelloWorld()).Start 
1
Bunları kullanabilirsin. Aşağıdaki örnek, başlangıç ​​yöntemini nasıl arayabileceğinizi ve aramayı tamamlamak için nasıl geri arama yapabileceğinizi gösterir. MakeWebServiceAsynCall'a yapılan çağrı hemen geri dönecekti. Kullanılan deyim, nesnenin güvenli bir şekilde yerleştirildiğinden emin olur.
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 
     } 
    } 

Aramanın başarılı olup olmadığını bilmeniz gerekiyorsa, sonucu beklemeniz gerekir.

İlgili konular