Grüße!Aktualisieren der Benutzeroberfläche nach asynchronen WebMethod-Calls
Ich habe einen WebService, der eine WebMethod enthält, die etwas Arbeit leistet und einen booleschen Wert zurückgibt. Die Arbeit, die es macht, kann einige Zeit dauern, deshalb möchte ich es asynchron nennen.
[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;
}
}
Dieser WebService existiert auf jedem Server in einer Webfarm. So auf jedem Server die DoWork() -Methode aufrufen, habe ich eine Klassenbibliothek, so zu tun, basierend auf einer Liste von Server-URLs:
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();
}
}
}
Schließlich ist diese von der Web-Schnittstelle in einem asp genannt wird: Button klicken Ereignis wie folgt:
WebSvcsMgr.DoAllWork(server_list);
Für die statische DoAllWork() -Methode durch das Web-Formular genannt, ich plane dies ein asynchroner Aufruf über IAsyncResult zu machen. Ich möchte jedoch einen erfolgreichen/fehlgeschlagenen DoWork() - WebMethod für jeden Server in der Farm melden, wenn die Ergebnisse zurückgegeben werden. Was wäre der beste Ansatz dazu in Verbindung mit einem UpdatePanel? Ein GridView? Etiketten? Und wie könnte dies von der statischen Helper-Klasse zum Web Form zurückgegeben werden?
Wäre es sinnvoller, MyWebSvc.DoWork() asynchron von WebSvcsMgr.DoAllWork() aufzurufen, oder WebSvcsMgr.DoAllWork() asynchron vom Webformular aus aufzurufen? – Bullines
Wahrscheinlich das Webformular, wenn der Benutzer nicht mit ihm interagiert oder nicht Benutzerfeedback erforderlich ist. – craigmoliver
Ich meine die Methode, nicht die Webform – craigmoliver