Je suis à la recherche d'une bibliothèque C#, de préférence open source, qui me permettra de planifier des tâches avec une certaine flexibilité. Plus précisément, je devrais être en mesure de programmer des tâches à exécuter toutes les N unités de temps ainsi que "Tous les jours de la semaine à XXXX heure" ou "Tous les lundis à XXXX heure". D'autres fonctionnalités seraient bienvenues, mais pas nécessaires. C'est quelque chose que je veux utiliser dans un WorkerRole Azure, ce qui exclut immédiatement les tâches programmées de Windows, "at", "Cron", et toute application tierce qui nécessite une installation et/ou une interface graphique pour fonctionner. Je suis à la recherche d'une bibliothèque.
Réponses
Trop de publicités?http://quartznet.sourceforge.net/
"Quartz.NET est un portage du très populaire (sic !) framework Java open source de planification des tâches, Quartz."
PS : Un conseil, n'essayez pas de naviguer sur quartz.net lorsque vous êtes au travail ;-)
J'ai utilisé Quartz à l'époque où j'étais en Java et il fonctionnait très bien. Je l'utilise maintenant pour certains travaux en .Net et il fonctionne encore mieux (bien sûr, il y a un certain nombre d'années pour qu'il se soit stabilisé). Je suis donc tout à fait d'accord avec les recommandations qui lui sont faites.
Une autre chose intéressante à laquelle vous devriez vous intéresser, et avec laquelle je viens de commencer à jouer, est le nouveau System.Threading.Tasks de .Net 4.0. J'ai juste utilisé les tâches pour paralléliser le travail et cela tire un grand avantage des multi-cœurs/processeurs. J'ai remarqué qu'il y a une classe nommée TaskScheduler, je ne l'ai pas regardée en détail, mais elle a des méthodes comme QueueTask, DeQueTask, etc. Cela pourrait valoir la peine de faire quelques recherches au moins.
Voir Une nouvelle bibliothèque de classes de planificateurs de tâches pour .NET sur Codeproject.
J'ai lu sur Quartz dans cette question Comment puis-je programmer un service Windows C# pour qu'il exécute une tâche quotidiennement ? . Il s'agit d'une bibliothèque C# qui permet une programmation flexible.
Le quartz semble être une bonne solution.
J'ai récemment (cette année) dû écrire un planificateur de tâches personnalisé pour un projet important sur lequel je travaillais. Eux aussi ne pouvaient pas utiliser le planificateur de tâches de Windows, et voulaient également pouvoir exécuter une fonctionnalité personnalisée en téléchargeant des assemblages (via un site Web ASP.net) et en faisant en sorte que le service exécute la tâche appropriée au moment spécifié.
Honnêtement, ce projet a été un peu un cauchemar (pas tant au niveau de la conception et de la mise en œuvre que de la logique de programmation).
Je vous recommande vivement d'épuiser toutes les autres possibilités avant de décider de "faire votre propre choix" (c'est-à-dire de réinventer la roue !).