Ich habe eine asp.net (mvc) Website. Als Teil der Funktionen muss ich einige lang andauernde Operationen unterstützen, zum Beispiel:Lange laufende Operationen (Threads) in einer Web (asp.net) Umgebung
Initiiert vom Benutzer: Benutzer kann (xml) Datei auf den Server hochladen. Auf dem Server muss ich eine Datei extrahieren, etwas manipulieren (in die Datenbank einfügen) usw. ... Dies kann von einer Minute bis zu zehn Minuten dauern (oder sogar mehr - hängt von der Dateigröße ab). Natürlich möchte ich die Anfrage nicht blockieren, wenn der Import läuft, aber ich möchte den Benutzer auf eine Fortschrittsseite umleiten, wo er die Möglichkeit hat, den Status oder Fehler zu sehen oder sogar den Import abzubrechen.
Diese Operation wird nicht häufig verwendet, aber es kann vorkommen, dass zwei Benutzer gleichzeitig versuchen, die Daten zu importieren. Es wäre schön, die Importe parallel laufen zu lassen. Zu Beginn dachte ich daran, einen neuen Thread in der iis (Controller-Aktion) zu erstellen und den Import in einem neuen Thread auszuführen. Aber ich bin mir nicht sicher, ob das eine gute Idee ist (um Arbeitsfäden auf einem Webserver zu erstellen). Sollte ich Windows-Dienste oder einen anderen Ansatz verwenden?
Initiiert vom System: - Ich muss regelmäßig Lucene Index mit den neuen Daten aktualisieren. - Ich werde in Zukunft Massen-E-Mails senden müssen.
Sollte ich dies als einen Job auf der Website implementieren und den Job über Quartz.net ausführen oder sollte ich auch einen Windows-Dienst oder etwas erstellen?
Welche Best Practices gelten für die Ausführung von Site-Jobs?
Danke!
Betrachten Sie einige dieser Antworten zu einer verwandten Frage http://StackOverflow.com/a/41734936/56145 –