it-swarm.com.de

wie plane ich eine Aufgabe in MVC4 C #?

Ich möchte ein Benachrichtigungssystem auf meiner Website erstellen (so etwas wie Stapelüberlauf)
Wie können wir eine Aufgabe für das Versenden der Benachrichtigung für Benutzer alle 24 Stunden planen?

Können wir MVC4 verwenden oder sollten wir den Windows-Dienst verwenden?

Bearbeiten:
Meine Erfahrung mit der Verwendung von FluentScheduler in 3 Monaten in einer MVC4-App.
FluentScheduler ist einfach zu konfigurieren und zu verwenden, führt jedoch keine Aufgaben aus. Mal rennen und mal nicht rennen.
Ich denke, die beste Methode zum Planen ist Windows Service, um sicherzustellen, dass eine Aufgabe zu einem bestimmten Zeitpunkt ausgeführt wird.

21
Mohammad Dayyan

Ich habe festgestellt, dass dies ein fantastischer Planer ist, FluentScheduler

Verwendungszweck:

// Schedule an ITask to run at an interval
    Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();
16
heads5150

Sie benötigen einen .Net Job Scheduler. Hier ist eine gute: http://quartznet.sourceforge.net/

7
phnkha

Sie können ATrigger Zeitplanungsdienst verwenden. Eine .Net-Bibliothek ist auch verfügbar, um geplante Aufgaben ohne Overhead zu erstellen. Fehlerprotokoll, Analytics, Aufgabenlisten und weitere Vorteile.

Haftungsausschluss: Ich war im ATrigger-Team. Es ist eine Freeware und ich habe keinen kommerziellen Zweck.

3
Kousha

vielleicht möchten Sie eine geplante Aufgabe verwenden. Dies in einer MVC zu tun, ist eine schlechte Idee (das Mischen von Verantwortlichkeiten) und das Erstellen eines Windows-Dienstes wirkt für mich wie ein Overkill (weil etwas nicht immer ausgeführt werden muss).

2
Jordi

Zuerst;

  1. Nuget-Paket hinzufügen Install-Package FluentScheduler
  2. Fügen Sie Ihre Registrierungsklasse hinzu, die die Registrierung und etwas Code erbt 
// Schedule a simple task to run at a specific time
Schedule(() => System.Diagnostics.Debug.Write("This is from service " + DateTime.Now.Second+"\n"))
               .ToRunNow().AndEvery(2).Seconds();
  1. Registrieren Sie diese Registrierungsklasse in Application_Start von Global.asax.cs Mit TaskManager
TaskManager.Initialize(new Test());

GitHub

1
Baqer Naqvi

Ich benutze die geplante Aufgabe von Fenstern.

Ich habe eine kleine App erstellt, als einen Datensatz in das bd einzugeben, und dann auf die Website mit dieser recordId (Guid) als Parameter zuzugreifen. 

In mvc überprüfe ich, ob die id existiert, wenn sie existiert, lasse ich tasks laufen und lösche dann den satz in der db, wenn nicht, ignoriere ich sie.

auf diese Weise kann ich einen Zeitplan mit einem Parameter hinzufügen. ohne die app jedes Mal zu aktualisieren, wenn ich eine neue geplante Aufgabe benötige. Ich füge einfach eine neue Aufgabe hinzu wie "myapp.exe/MyNewTaskName"

hoffe das hilft jemandem ;-)

1
Benoit

Es gibt auch eine integrierte Option, QueueBackgroundWorkItem. Es wurde in .NET 4.5.2 hinzugefügt und hier ist eine Anleitung, wie man es in MVC verwendet.

Neben dem bereits erwähnten FluentScheduler haben Sie auch HangFire . Und wenn Sie die Bereitstellung für Azure planen gibt es dafür eine Handvoll verschiedener Dienste .

0