일부 작업을 수행하고 부울 값을 반환하는 WebMethod가 포함 된 WebService가 있습니다. 시간이 걸릴 수도 있고 안될 수도 있으므로 비동기식으로 호출하고 싶습니다.
[WebService(Namespace = "http://tempuri.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class MyWebSvc : System.Web.Services.WebService
{
[WebMethod]
public bool DoWork()
{
bool succ = false;
try
{
// do some work, which might take a while
}
catch (Exception ex)
{
// handle
succ = false;
}
return succ;
}
}
이 웹 서비스는 웹 팜의 각 서버에 있습니다.
static public class WebSvcsMgr
{
static public void DoAllWork(ICollection<string> servers)
{
MyWebSvc myWebSvc = new MyWebSvc();
foreach (string svr_url in servers)
{
myWebSvc.Url = svr_url;
myWebSvc.DoWork();
}
}
}
마지막으로,이가 ASP에서 웹 인터페이스에서 호출 : 그래서 각 서버의 DoWork() 메서드를 호출하기 위해, 나는 서버 URL 목록을 기반으로, 그렇게 할 수있는 클래스 라이브러리를 가지고 버튼을 과 같이 이벤트를 클릭
WebSvcsMgr.DoAllWork(server_list);
을 웹 양식에 의해 호출 정적 DoAllWork() 메소드의 경우,이 IAsyncResult를 통해 비동기 호출 할 계획입니다. 그러나 결과가 반환 될 때 팜의 각 서버에 대한 DoWork() WebMethod의 성공/실패를보고하고자합니다. UpdatePanel과 연계하여 가장 좋은 방법은 무엇입니까? GridView? 레이블? 정적 도우미 클래스가 Web Form으로 어떻게 반환 할 수 있습니까?
WebSvcsMgr.DoAllWork()에서 MyWebSvc.DoWork()를 비동기 적으로 호출하거나 Web Form에서 WebSvcsMgr.DoAllWork()를 비동기 적으로 호출하는 것이 더 맞습니까? – Bullines
아마도 사용자가 웹 페이지와 상호 작용하지 않거나 사용자 피드백이 없으면 웹 양식이 필요합니다. – craigmoliver
웹 양식이 아니라 해당 메서드를 의미합니다. – craigmoliver