2011-09-08 7 views
0

Javascript 및 SOAP를 사용하여 호출되는 웹 서비스를 개발하려고합니다. 사용자가 특정 시간 동안 로그인 할 수있는 상태 저장 서비스이며, Context.Session을 사용하여 필요한 데이터를 저장합니다. 사용자는 로그인 후 긴 작업을 호출하고 정기적 인 상태 업데이트를 받아야합니다. 문제는 내 서비스가 한 번에 하나의 호출 (예 : WebMethod A()) 만 실행되고 A()가 실행을 마칠 때까지 WebMethod B()를 호출 할 수없는 방식으로 작동한다는 것입니다. 두 가지 질문이 있습니다. 상태 업데이트를받는 가장 좋은 방법은 무엇입니까? 서버가 클라이언트에 자동으로 데이터를 다시 게시하거나 대신 GetStatus 서비스 메서드를 폴링하는 것이 가장 좋습니다. 어떻게 비동기를 얻을 수 있습니까? 동일한 웹 서비스에서 서로 다른 때로는 전혀 관련없는 웹 메소드를 호출 할 수 있도록 웹 서비스 내부에서 실행합니까? 감사합니다.웹 서비스 - 비동기 실행 및 상태 업데이트

+0

나는 확실하지 않다. Javascript에서 호출 할 때 두 메소드를 거의 동시에 실행하는 데 문제가 없어야합니다. 나는 그것을하는 방법에 "거친"아이디어를 게시 할 것입니다. – Icarus

답변

0

것은 당신이 할 수있는 jQuery를 사용 : 당신은 방법 A가 완료 될 때까지 당신이 방법 B를 호출 할 수 있다고 왜

function CallMethodA() { 
     $.ajax({ 
      type: "POST", 
      url: "WebService.asmx/MethodA", 
      // whatever else ... 
      success: function (response) { 
       //handle success 
      } 
     }); 
    CallMethodB(); 
} 


function CallMethodB() { 
     $.ajax({ 
      type: "POST", 
      url: "WebService.asmx/MethodB", 
      // whatever else ... 
      success: function (response) { 
       //handle success 
      } 
     }); 
    } 

Ajax requests in JQuery are async by default.

+0

감사합니다 이카루스, 어쨌든 그것을하는 방법입니다. 웹 서비스를 실행하는 Appy App Pool은 "최대 작업자 프로세스 수"가 1로 설정되어 있기 때문에 서버 구성을 확인해야합니다. 그러면 하위 스레드를 생성하지 못하게해야합니까? –

+0

나는 그것이 http://stackoverflow.com/questions/860478/asp-net-mvc-jquery-iis6-multiple-ajax-requests에 의해 이미 다루어 졌다고 가정한다. 서버에 여러 요청을 제출할 수 있지만 순차적으로 처리됩니다. –

+0

@Acolyte 나는 그렇게 생각하지 않는다. 서버에 여러 요청을 확실히 보낼 수 있으며 병렬로 처리됩니다. 예, 제한이 있습니다 ("표준"이 4 개라고 생각합니다). 그러나 서버 또는 클라이언트 측에 특별한 설정이없는 한 그 한도는 분명히 아닙니다. 제가 말하고자하는 바를 증명하는 가장 쉬운 방법은 방화범을 쥐고 주어진 웹 사이트에 대해 동일한 도메인에 대해 얼마나 많은 요청이 병렬로 처리되는지 보는 것입니다. – Icarus

관련 문제