Status einer langen Operation anzeigen

06/10/2008 - 13:01 von Ralf Kaiser | Report spam
Hallo,

in einer Webapplikation habe ich eine Operation die relativ lange dauert
(eine Datei wird hochgeladen, geparst, verarbeitet und Ergebnisse werden in
eine Datenbank eingetragen). Die Operation wird durch das Hochladen der
Datei in Gang gesetzt.

Es findet danach, bis alles fertig ist, kein Postback mehr statt.

Ich würde nun gerne dem Benutzer irgendeine Rückmeldung geben, was gerade
passiert. Da jedoch kein Postback oder sonstiges stattfindet.

Geht das irgendwie in einer Webapplikation? (ich habe es schon mit einem
"Statuslabel" in einem Updatpanel versucht aber aus irgend einem Grund
findet da kein Update statt, selbst wenn ich das Updatepanel vom Code aus
per Update-Methode versuche zu aktualisieren)

Danke,
Ralf
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
06/10/2008 - 13:11 | Warnen spam
Hallo Ralf,

"Ralf Kaiser" schrieb:

in einer Webapplikation habe ich eine Operation die relativ lange dauert (eine Datei wird hochgeladen, geparst, verarbeitet und
Ergebnisse werden in eine Datenbank eingetragen). Die Operation wird durch das Hochladen der Datei in Gang gesetzt.



Erfolgt die Abarbeitung synchron bzw. direkt im selben Request oder ist
da eine Art Queue dazwischen? Ich gehe mal von ersterem aus, dabei kann
das auch nicht funktionieren, weil der Client die Daten erstmal haben
müsste um einen neuen Request an den Server zu stellen.

Ich würde nun gerne dem Benutzer irgendeine Rückmeldung geben, was gerade passiert. Da jedoch kein Postback oder sonstiges
stattfindet.



Damit das funktioniert müsstest Du den Job in einem separaten Prozess
bzw. Thread laufen lassen. Ich gehe dabei meist so vor, dass ich die
Jobs in eine Tabelle eintrage und ein separater Thread innerhalb der
Anwendung, alternativ ein Hintergrunddienst, die Abarbeitung übernimmt.
Dort aktualisiere ich dann den Jobstatus in der Datenbanktabelle und
dieser wird dann wiederum von einem Webservice ausgelesen. Der Webservice
wird dann über Ajax angesprochen. Klingt zwar ziemlich eklig, geht aber
ganz gut :)

Request
-> Dateiupload
-> Speichern Datei
-> Eintragen Jobdaten in Datenbank
-> Rückgabe der Job ID für spàtere Ajax Requests

Separater Thread / Windowsdienst
-> Auslesen Jobtabelle
-> Abarbeiten Job
-> Aktualisieren Jobstatus

Webservice
-> Auslesen Jobstatus anhand übergebener Job Id
-> Rückgabe Jobstatus

Clientseitig / Ajax
-> Aufruf Webservice mit Übergabe Job ID
-> Anzeige Rückgabewert des Webservice

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen