2016-04-25 8 views
-1

habe ich eine Funktionalität meine Web-Applikations-Datenbank unter Verwendung von Daten aus einer XML-Datei zu aktualisieren. Ich möchte, dass diese Datenbank nach 24 Stunden aktualisiert wird. Mein Problem ist, dass ich nicht weiß, wo und wie im Code ich diese Methode so nennen soll, dass sie nicht durch einen Klick ausgelöst werden muss und sie alle 24 Stunden ausgeführt wird. Bitte Hilfe.Asp.Net Web-Anwendungsdatenbank Auto-Update-Funktionalität

+1

Ein Ansatz wäre, den Code zu setzen, die Datenbank in die eigene Anwendung aktualisiert, und erstellen Sie ein Fenster geplante Aufgabe, die zu einer bestimmten Tageszeit läuft. Schau mal hier - http://windows.microsoft.com/en-gb/windows/schedule-task#1TC=windows-7 – Alex

+0

Danke Alex ..... aber gibt es noch eine andere Möglichkeit wo ich es haben kann die gleiche Anwendung. –

+0

Es ist möglich, erfordert aber etwas mehr Arbeit. Ich werde gleich antworten, da die Erklärung für einen Kommentar zu lang wird. – Alex

Antwort

0

Ein Teil des Problems mit Hintergrund-Tasks in ASP.NET ist, dass Sie nicht über eine Standardanwendung Threads, kick off läuft.

Wenn Sie beginnen, Hintergrundaufgaben in der Webanwendung zu starten, können Sie am Ende mit inkonsistentem Verhalten enden, wenn etwas Ihre Appdomain zum Scheitern bringt. Ihre Aufgabe kann unterbrochen werden, wenn Sie eine Datenbank aktualisieren ernstes Problem.

Der flexibelste Weg, dies zu realisieren wird mit einer separaten Anwendung auf einem Windows geplante Aufgabe ausgeführt wird, die für Sie die DB aktualisiert. Dies trennt die Aufgabe vollständig von der Webanwendung, kann jedoch schwierig zu warten sein. Es bedeutet jedoch, dass, selbst wenn Ihre Webanwendung aus irgendeinem Grund offline ist, die Datenbank immer noch aktualisiert wird, solange der Server, auf dem die Aufgabe ausgeführt wird, gerade funktioniert.

Wenn Sie die Aufgabe in die Webanwendung einbetten möchten, wäre etwas, das Cron ähnlich ist, vorzuziehen, da Sie die Aufgabe gemäß einer Reihe von Regeln auslösen und sie ihren eigenen Geräten überlassen können.

Quartz Scheduler kann dies erreichen, kann aber knifflig sein zum Laufen zu bringen, und manchmal übertrieben für einfache Aufgaben. Es lohnt sich, für komplexere Systeme zu lernen, die viele Aufgaben erfordern, die in komplexen Zeitplänen ausgeführt werden, und die Verwendung von Cron-Ausdrücken erlaubt.

HangFire ist eine andere Lösung für das gleiche Problem, und ist etwas einfacher als Quartz Scheduler, während noch cron-Konfiguration für Aufgaben ermöglicht.

Wenn Sie HangFire verwenden, wird die folgende Aufgabe jeden Tag um Mitternacht ausgelöst (wobei UpdateDB die Methode ist, die das Update ausführt).

RecurringJob.AddOrUpdate(() => UpdateDB(), "0 0 0 * * ?");

Für Ihre Bedürfnisse, ist HangFire wahrscheinlich der schnellste Weg, diese Funktion zu erhalten.

Nachfolgend finden Sie einen Überblick über HangFire geben: http://docs.hangfire.io/en/latest/quick-start.html

HangFire ist im NuGet Archiv, so dass Sie es schnell die NuGet Pakete Kontextmenü sehr hinzufügen können, und die Dokumentation für timed Aufgaben ist hier: http://docs.hangfire.io/en/latest/background-methods/performing-recurrent-tasks.html

Hoffentlich ist dies genug, um loszulegen.