Je veux créer un système de notification sur mon site Web (un peu comme un débordement de pile)
Comment pouvons-nous planifier une tâche pour envoyer la notification par courrier électronique aux utilisateurs toutes les 24 heures?
Pouvons-nous utiliser MVC4 ou devrions-nous utiliser le service Windows?
Modifier:
Mon expérience de l’utilisation de FluentScheduler
en 3 mois dans une application MVC4.FluentScheduler
est facile à configurer et à utiliser, mais il n’exécute pas de tâches à tout moment. Parfois courir et parfois ne pas courir.
Je pense que le meilleur moyen de planifier est le Windows Service
afin d’assurer l’exécution d’une tâche à une heure précise.
J'ai trouvé que c'était un ordonnanceur génial, FluentScheduler
Usage:
// Schedule an ITask to run at an interval
Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();
Vous avez besoin d'un planificateur de tâches .Net. En voici un bon: http://quartznet.sourceforge.net/
Vous pouvez utiliser ATrigger service de planification. Une bibliothèque .Net est également disponible pour créer des tâches planifiées sans surcharge. Journal des erreurs, analyses, listes de tâches et plus d'avantages.
Disclaimer: Je faisais partie de l'équipe ATrigger. C'est un freeware et je n'ai aucun but commercial.
peut-être que vous voulez utiliser une tâche planifiée. Faire cela dans un MVC est une mauvaise idée (mélanger les responsabilités) et créer un service Windows me semble excessif (parce que quelque chose n'a pas besoin de fonctionner tout le temps).
Tout d'abord;
Install-Package FluentScheduler
// 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();
Global.asax.cs
Avec TaskManager.TaskManager.Initialize(new Test());
J'utilise une tâche planifiée de Windows.
J'ai construit une petite application que d'entrer un enregistrement dans le BD, puis accéder au site Web avec cet ID recordId (Guid) en tant que paramètre.
Dans MVC, je vérifie si l'ID existe, s'il existe j'exécute des tâches puis supprime l'enregistrement dans la base de données, sinon je l'ignore.
de cette façon, je suis capable d’ajouter un calendrier avec un param. sans mettre à jour l'application à chaque fois, j'ai besoin d'une nouvelle tâche planifiée. je viens d'ajouter une nouvelle tâche comme "myapp.exe/MyNewTaskName"
espérons que cela aide quelqu'un ;-)
Il existe également une option intégrée, QueueBackgroundWorkItem. Il a été ajouté à .Net 4.5.2 et voici un guide pour l’utiliser dans MVC .
En plus de FluentScheduler mentionné précédemment, vous avez également HangFire . Et si vous envisagez de déployer sur Azure il existe une poignée de services différents pour cela .