Ich habe diese App, die Zeit nimmt Einträge von fogbugz und posts sie zu basecamp, aber jetzt muss es manuell ausgeführt werden. Es gibt eine Anforderung für mich, es wöchentlich oder jede Nacht laufen zu lassen, was ist der beste Weg, dies zu tun?Die beste Methode, um eine ASP.NET-Seite in einem Intervall auszuführen?
Antwort
Erstellen Sie eine scheduled task?
IMO, ist der beste Weg, einen Webdienst zu schreiben, der Ihre geplanten Aufgaben erledigt. Und um einen Windows-Dienst zu entwickeln, der Ihren Web-Service abhängig von Ihrem Zeitplan aufruft.
Ich würde einen kleinen Windows-Dienst erstellen, der die Seite nur mit einem einfachen WebRequest lädt. Ein anderer Ansatz besteht darin, einen Hintergrundthread im Application_Start-Ereignis von global.asax zu erstellen. Es gibt eine Menge Links zu diesem Ansatz, z.B .:
What are some best practices for managing background threads in IIS?
++ auf Canavar und gattaca Kommentaren, aber ich würde die Hintergrund-Thread Frage vermeiden. Ich habe gehört, dass diese Threads manchmal recycelt werden können und da Ihre App nicht neu startet, gehen sie ins Nichts über. Ich könnte hier falsch liegen. In jedem Fall weniger mem und solide Leistung beim Schreiben eines Windows-Dienstes ... es sei denn, Sie befinden sich auf einem freigegebenen Host, auf dem Sie keinen Dienst installieren können.
Was ist der Client, der die ASP.NET-Seite anfordert, und was macht er mit der Antwort? Die wahrscheinlichste Antwort ist, dass es keinen Client gibt, und es gibt keine große Antwort.
Einstellung "warum ist es eine ASP.NET-Seite dann" Art der Antwort. Einige gängige Ansätze sind: -
- Verwenden Sie eine geplante Aufgabe, aber das dauert externe Konfiguration.
- nicht ASP.NET Verwenden Sie aber einen Dienst erstellen, die Aufgabe zu erfüllen, aber das ist noch mehr externe Konfiguration
Ein Ansatz, der in der Webanwendung enthält sein kann, ist ein Dummy-Objekt in den Cache hinzufügen, dass hat eine bestimmte Ablaufzeit, erlaubt keine willkürliche Löschung durch die eigenen Algorithmen des Caches und verfügt über eine Callback-Methode, wenn das Objekt gelöscht wird.
Ein einfacher, aber fehlerhafter Ansatz wäre, den Ablauf für den Artikel zu dem Zeitpunkt festzulegen, zu dem Sie Ihre Operation ausführen möchten. Ein besserer Ansatz wäre jedoch, ein kürzeres Intervall für das Ablaufdatum zu verwenden, dann bei jedem Ablauf einen Datenbankeintrag zu überprüfen, um zu sehen, ob der Vorgang das Element im Cache ausführen und/oder wiederherstellen muss.
Möglicherweise würden Sie diesen DB-Test transaktional mit einem Flag durchführen, das anzeigt, dass es behandelt wird. Dieser Ansatz würde Web Gardens und Farmen erlauben, nicht übereinander zu stolpern, um alle die gleiche Aufgabe zu erledigen.
Beim Start der Anwendung können Sie auch die Datenbank überprüfen, um festzustellen, ob die Aufgabe ausgeführt werden muss, bevor das Element zum ersten Mal im Cache erstellt wird.
- 1. Die beste Methode, um geplanten Code auf AWS auszuführen
- 2. Die beste Methode, um eine Methode asynchron in Android auszuführen (kompakt und korrekt)
- 3. Die beste Methode, um eine Protokolldatei in GO zu rollen
- 4. Die beste Methode, um einem Objekt Werte hinzuzufügen?
- 5. Schnellste Möglichkeit, eine Methode asynchron auszuführen?
- 6. Die beste Methode, um Daten zwischenzuspeichern
- 7. Beste Methode, um eine Java-Anwendung als * nix Daemon oder Windows Service auszuführen?
- 8. Die beste Methode, um eine KeyNotFoundException zu behandeln
- 9. Gibt es eine ActiveRecord-Methode, um diese SQL-Abfrage auszuführen?
- 10. Die beste Methode, um die Sitzung zwischen Servern zu verwalten?
- 11. Die beste Methode, um ein Array in C zu verschieben?
- 12. Angular2 + http in einem Intervall
- 13. Was ist die beste Methode, um eine Nummer von einem Benutzer zu erhalten?
- 14. Die beste Methode, um einen Ladespinner in Django anzuzeigen?
- 15. Erhalte eine Zahl in einer ungeordneten Geraden, die einem Startwert aus einem Intervall folgt
- 16. Die beste Methode der Textdateianalyse in C#?
- 17. Zahlen in einem Intervall C++
- 18. Angular, wie drücken Sie die Eingabetaste, um eine Funktion auszuführen?
- 19. Was ist der beste Weg, um einen kontinuierlichen Prozess in einem eigenen Thread auszuführen?
- 20. Die beste Methode, um eine dynamische Domäne in many2many Feld in Odoo8 anzuwenden?
- 21. Javascript Drücken der Taste in einem Intervall
- 22. Beste Methode für die Reindexierung
- 23. Beste Methode, um eine Zeichenfolge aus einer Razor View
- 24. Die beste Methode, um zu erkennen, ob Code in einem Anwendungsserver ausgeführt wird. Java
- 25. Der beste Weg, um eine lange DB-Abfrage im klassischen ASP auszuführen?
- 26. C# Die beste Methode, um von einer Datenbankabfrage abzuweichen
- 27. Die beste Methode, um einen synchronen Aufruf zu verarbeiten
- 28. Die beste Methode zum Floaten?
- 29. Was ist die beste Methode, um einen FileSystemWatcher-Fehler wiederherzustellen?
- 30. Die beste Methode, um ein Objekt mit einem anderen Objekt desselben Typs in .Net zu aktualisieren?
Wow, ein -1 für das? Warum? –