¡Saludos!Actualización de la IU después de las llamadas al Asynchronous WebMethod
Tengo un WebService que contiene un WebMethod que hace algún trabajo y devuelve un valor booleano. El trabajo que hace puede o no tomar algo de tiempo, así que me gustaría llamarlo de forma asíncrona.
[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;
}
}
Este servicio Web existe en cada servidor en una granja de servidores web. Así que para llamar al método DoWork() en cada servidor, tengo una biblioteca de clases para hacerlo, sobre la base de una lista de direcciones URL del servidor:
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();
}
}
}
Finalmente, esto se llama desde la interfaz Web en un asp: Button haga clic en evento de este modo:
WebSvcsMgr.DoAllWork(server_list);
para el método DoAllWork estática() llamado por el formulario web, planeo hacer esto una llamada asincrónica a través de IAsyncResult. Sin embargo, me gustaría informar un éxito/falla de DoWork() WebMethod para cada servidor en la granja de servidores a medida que se devuelven los resultados. ¿Cuál sería el mejor enfoque para esto en conjunción con un UpdatePanel? Un GridView? ¿Etiquetas? ¿Y cómo puede esto ser devuelto por la clase de ayuda estática al formulario web?
¿Tendría más sentido llamar a MyWebSvc.DoWork() de forma asincrónica desde WebSvcsMgr.DoAllWork(), o bien llamar a WebSvcsMgr.DoAllWork() de forma asincrónica desde el formulario web? – Bullines
Probablemente el formulario web si el usuario no está interactuando con él o no es necesaria la retroalimentación del usuario. – craigmoliver
Me refiero al método, no al formulario web – craigmoliver