Service Windows ou Planificateur de tâches Windows?

10

Je prévois de créer un utilitaire qui interrogera la base de données et stockera des informations (sur une autre table de la base de données). C'est un utilitaire multi-thread et nécessiter de s'exécuter toutes les 5 ou 10 minutes / plus tard peut être trois fois par jour.

Je vois deux options pour y parvenir dans la programmation C # / DotNet.

  • créer un service Windows avec une approche minuterie à l'intérieur.
  • un programme de console et le planifier à l'aide du planificateur de tâches Windows.

Lequel préférez-vous et pourquoi?

Pavan GR
la source
3
Je pense que cette question est mieux adaptée pour SO
Naveen
1
Vraiment, c'est une bonne question de conception de logiciel et vous aurez probablement au moins cinq bonnes réponses en cinq heures une fois que vous la poserez sur SO.
2010
1
J'ai voté pour fermer, cela appartient en fait à SO
Jaco Pretorius
2
Cette question suscite une discussion subjective et / ou approfondie sur les mérites de l'une ou l'autre. C'est beaucoup sur le sujet ici et là subjectif et argumentatif.
2
Je ne suis pas sûr, je pense que la dernière phrase "Laquelle préférez-vous et pourquoi?" déclencherait les close-bots là-bas. C'est mieux ici puisque les réponses réelles peuvent être obtenues ici
TheLQ

Réponses:

2

Commentaires d'un de mes collègues d'hier sur ce même sujet

"il y aura toujours une opinion variée sur celui-ci ... Ma règle de base serait si vous avez besoin de quelque chose qui s'exécute toutes les cinq minutes (et vous ne vous souciez pas de la durée de l'exécution ou de la durée d'une exécution) ou de quelque chose qui répond aux événements, utilisez un service. Si vous avez besoin de quelque chose à exécuter à une heure particulière chaque jour et que vous êtes sûr qu'il n'y aura pas de dépassement, utilisez le planificateur fourni avec le système d'exploitation. Si vous avez besoin d'un hybride, utilisez les deux des solutions pour les différents cas ou trouver quelque chose sur étagère. (Peut-être Quartz .Net) "

L'article de Jon Galloway de 2005 "// TODONT: Utilisez un service Windows juste pour exécuter un processus planifié" est une bonne lecture. Je suggère que les commentaires soient également lus, car la discussion se poursuit jusqu'à aujourd'hui et fournit également de bons contre-arguments.

Personnellement, je suis d'accord avec mon collègue à ce sujet. Restez simple aussi longtemps que possible. Et si vous déployez sur le serveur Win2008, consultez le Planificateur de tâches et toutes les fonctionnalités offertes par le planificateur standard. Pour moi, le tueur devait démarrer une tâche planifiée lorsqu'un événement se produit.

Ahmad
la source
4

Les services sont utilisés à des fins administratives ou pour offrir un service à plusieurs applications.

Les planifications sont utilisées pour exécuter une tâche plusieurs fois qui ne nécessitent pas nécessairement des autorisations supplémentaires.

Tamara Wijsman
la source
3

J'ai entendu les arguments en faveur de l'utilisation de Windows Scheduler, mais j'ai toujours opté pour l'écriture de mon application en tant que service. Au début, je pensais que ce serait une meilleure solution dans un environnement en cluster, mais ce n'est pas vraiment vrai. L'essentiel est que je n'avais pas de bonne raison autre que celle-ci "se sentait" comme un meilleur design.

Walter
la source
0

pourquoi n'essayez-vous pas Quartz.net
je l'ai utilisé une fois et je peux dire que c'est un cadre puissant pour créer votre propre planificateur, et il fournit un service pré-construit qui exécutera vos tâches planifiées (stockées dans la base de données ou simplement dans un fichier XML ) http://quartznet.sourceforge.net/

aleo
la source
2
-1 Cela ne répond pas du tout à la question et conviendrait mieux comme commentaire.
Tamara Wijsman
0

Si vous souhaitez que l'utilisateur ait plus de contrôle sans que vous ayez à le créer, utilisez le Planificateur de tâches. On dirait que Google fait cela avec la mise à jour de leurs applications. Selon l'utilisateur, il n'est pas difficile de gérer la tâche. Sortez l'utilisateur de la boucle et créez un service. La plupart des gens ne les toucheront jamais.

JeffO
la source