Frage

Welche unterschiedlichen Ansätze gibt es zum Erstellen geplanter Aufgaben für Webanwendungen, mit oder ohne separate Web-/Desktopanwendung?

War es hilfreich?

Lösung

Wenn wir über die Microsoft-Plattform sprechen, würde ich immer einen separaten Windows-Dienst entwickeln, um solche Batch-Aufgaben zu erledigen.

Sie können immer auf dieselben Assemblys verweisen, die von Ihrer Webanwendung verwendet werden, um unangenehme Codeduplizierungen zu vermeiden.

Andere Tipps

Jeff hat dies im Stack Overflow-Blog besprochen –http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

Grundsätzlich schlug Jeff vor, CacheItemRemovedCallback als Timer zum Aufrufen bestimmter Aufgaben zu verwenden.

Ich persönlich bin der Meinung, dass automatisierte Aufgaben als Dienst, als geplante Windows-Aufgabe oder als Job in SQL Server behandelt werden sollten.

Unter Linux checken Sie cron aus.

Ich denke, dass Stack Overflow selbst einen ApplicationCache-Ablauf verwendet, um in regelmäßigen Abständen Hintergrundcode auszuführen.

Wenn Sie auf einem Linux-Host arbeiten, verwenden Sie mit ziemlicher Sicherheit cron.

Unter Linux können Sie Cron-Jobs verwenden (http://www.unixgeeks.org/security/newbie/unix/cron-1.html), um Aufgaben zu planen.

Verwenden Sie URL-Abrufprogramme wie wget oder curl, um HTTP-GET-Anfragen zu stellen.

Sichern Sie Ihre URLs durch Authentifizierung, sodass niemand die Aufgaben ausführen kann, ohne den Benutzer/das Passwort zu kennen.

Ich denke, dass der in Windows integrierte Taskplaner das empfohlene Tool für diesen Job ist.Das erfordert eine externe Anwendung.

Vielleicht ist dies das, wonach Sie suchen, aber lesen Sie diesen Artikel: „Simulieren Sie einen Windows-Dienst mit ASP.NET, um geplante Jobs auszuführen".Ich denke, StackOverflow könnte diese Methode verwenden oder es wurde zumindest darüber gesprochen, sie zu verwenden.

Eine sehr einfache Methode, die wir bei meiner Arbeit verwendet haben, ist diese:

  1. Richten Sie einen Webservice/eine Webmethode ein, die die Aufgabe ausführt.Dieser Webservice kann auf Wunsch mit Benutzername/Passwort gesichert werden.
  2. Erstellen Sie eine Konsolen-App, die diesen Webdienst aufruft.Bei Bedarf können Sie die Konsolen-App Parameter senden lassen und/oder Metriken zur Ausgabe an die Konsole oder zur externen Protokollierung zurückerhalten.
  3. Planen Sie diese ausführbare Datei im Taskplaner Ihrer Wahl.

Es ist nicht schön, aber es ist einfach und zuverlässig.Da die Konsolen-App im Wesentlichen nur ein Herzschlag ist, der die App anweist, ihre Arbeit zu erledigen, muss sie keine Bibliotheken mit der Anwendung teilen.Ein weiterer Pluspunkt dieser Methode besteht darin, dass es recht einfach ist, bei Bedarf manuell anzustoßen.

Verwenden Sie URL-Abrufprogramme wie wget oder curl, um HTTP-GET-Anfragen zu stellen.

Sichern Sie Ihre URLs durch Authentifizierung, sodass niemand die Aufgaben ausführen kann, ohne den Benutzer/das Passwort zu kennen.

Sie können cron beispielsweise auch anweisen, PHP-Skripte direkt auszuführen.Und Sie können die Berechtigungen für die PHP-Datei festlegen, um zu verhindern, dass andere Personen darauf zugreifen, oder, noch besser, diese Dienstprogramm-Skripte nicht in einem über das Internet zugänglichen Verzeichnis zu haben ...

Java und Spring – Verwenden Sie Quarz.Sehr nett und zuverlässig -- http://static.springframework.org/spring/docs/1.2.x/reference/scheduling.html

Ich denke, es gibt einfachere Möglichkeiten als die Verwendung von cron (Linux) oder Taskplaner (Windows).Sie können dies in Ihre Web-App integrieren, indem Sie Folgendes verwenden:(a) Quarz-Scheduler,

oder wenn Sie keine andere Bibliothek eines Drittanbieters in Ihre Anwendung integrieren möchten:(b) Erstellen Sie beim Start einen Thread, der die Standard-Java-Klasse „java.util.Timer“ verwendet, um Ihre Aufgaben auszuführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top