Lange laufende Aufgaben - Best Practice - ASP.NET 4.0, C #

8

Was ist der empfohlene Ansatz für den Umgang mit Prozessen, deren Ausführung sehr lange dauert? Ich möchte es nicht einfach auf dem Server ausführen, da die Seite eine Zeitüberschreitung hat.

Ich habe das Web durchsucht und mehrere Ansätze gefunden - AJAX, Threading, Web Services ... (von denen ich keine Erfahrung habe)

Was ist die beste Methode, um damit umzugehen?

Danke.

    
Rivka 06.03.2012, 02:29
quelle

3 Antworten

4

Ein transparenter und zuverlässiger Weg besteht darin, die gewünschte Aufgabe zusammen mit der Verarbeitungswarteschlange als WebService zu implementieren. So können Sie auf der Client-Seite einfach eine Anfrage an den Webserver senden, eine ID erhalten, um das Ergebnis später zu überprüfen.

Alles andere hängt davon ab, wie viel Benutzererfahrung Sie implementieren möchten. Sie können den Benutzer einfach dazu bringen, die Steuerung oder die ganze Seite von Zeit zu Zeit durch Drücken einer Taste zu aktualisieren. Oder implementieren Sie ein Ajax-basiertes Steuerelement, das Anfragen sendet und von Zeit zu Zeit auf die Ergebnisse prüft.

    
Timur Sadykov 06.03.2012, 02:36
quelle
8

Wenn Sie nur eine lang andauernde Aufgabe erledigen möchten, ist ein Windows-Dienst dafür ideal. Nein, kein Webservice, sondern ein Windows-Dienst der alten Schule. Wenn jemand eine Excel-Datei hochlädt, kann Ihr Windows-Dienst ein Verzeichnis mithilfe von FileWatcher überwachen und anschließend den Importvorgang automatisch ausführen. Auf diese Weise beschränken Sie Ihren Prozess nicht auf ASP.NET und die IIS-Arbeitsprozesse, die aus verschiedenen Gründen wiederverwendet werden können. Es scheint, dass deine App wirklich außerhalb von IIS sein muss. Der Upload-Prozess kann ein einfaches Web-Frontend sein, um diese Datei in das Verzeichnis zu stellen, das von Ihrem Windows-Dienst überwacht wird.

    
Tim P. 06.03.2012 03:13
quelle
1

Abhängig von Ihren Anforderungen können Sie einfach einen WebService (oder genauer gesagt einen WCF-Dienst einrichten da reguläre XML WebServices veraltet sind), wie Pukipuki erwähnt.

Wenn der langwierige Prozess kompliziert ist (viele Schritte, sehr intensiv, etwas, das auf anderen Servern betrieben werden könnte) oder robust sein muss (der Job kann fehlschlagen und muss erneut versucht werden, usw.), möchten Sie vielleicht Sehen Sie sich die Funktionsweise von Message Queuing an, um den Ein- und Ausstieg aus dem Dienst, der den lang andauernden Prozess durchführt, zu steuern. Message Queuing ist in einigen Situationen sicherlich zu viel Aufwand, aber es ist auch ein nettes Framework, das Nachrichtenspeicherung, Persistenz und Ablaufsteuerung bietet, so dass Sie nicht alles selbst erstellen müssen. Hier ist ein ziemlich guter Überblick über die Verwendung von MSMQ mit ASP.NET (Es tut mir leid, aber der Beispielcode scheint VB und nicht C # zu sein).

    
Norm MacLennan 06.03.2012 03:07
quelle

Tags und Links