Auf Knopfdruck möchte ich meinen Dienst aufrufen, Datenbank abzufragen und csv-Datei zu generieren und zurück zu Benutzer zurückzukehren. Dieser Prozess läuft lange (kann bis zu 40 Sekunden dauern) Ich möchte den Benutzer nicht blockieren. Ich würde lik Fortschritt-Seite zu erstellen, in dem Benutzer einen Fortschritt der Erstellung von Berichten heften können:Generieren von Dateiprozessaktualisierungen im Frühjahr mvc
Meine Idee ist:
Nehmen Sie eine Eingabe von Benutzern und Create Anfrage an den Service stellen. Warten Sie nicht auf die Antwort, senden Sie die Berichts-ID an den Benutzer zurück. Die neue Registerkarte wird geöffnet, wo der Benutzer den Status der Berichterstellung überwachen kann. Benutzer kann die Berichtsseite überprüfen, um den Status seiner Anfrage zu sehen Wenn die Anfrage fertig ist - wird der Download des Berichts im Browser gestartet.
würde Ich mag smth wie diese haben:
ein. Controller-Methode, die die Datei speichert und die Datei-ID zurückgibt. Danach wird der neue Thread in diesem Contorller den Dienst aufrufen und Daten in die angegebene Datei schreiben b. Controller-Methode, die mit Anforderung params Bericht des Status zeigen - fileid Überprüfen Sie, ob Datei generiert oder nicht Wenn Datei generiert wird - schreiben Datei auf den HttpServletResponse Antwort
Frage ist: Wo sollte ich Datei-ID speichern und wie Datei-ID verbinden und Datei selbst? (Cache? Datenbank?)
Wie kann ich den Berichtstatus prüfen? Ich denke daran, alle 1-2 Sek. Eine AJAX-Anfrage zu senden.
Irgendwelche Ideen und Empfehlungen?