2010-05-11 8 views
8

Je dois créer une application qui lira certaines informations à partir d'une base de données, traiter les données, réécrire les modifications sur la base de données, puis envoyer un e-mail avec ces modifications à certains utilisateurs ou groupes. Je vais écrire ceci en C#, et ce processus doit être exécuté une fois par semaine à un moment donné. Cela sera exécuté sur un serveur Windows 2008. Par le passé, je suivais toujours la procédure de création d'un service Windows avec une minuterie et définissais l'heure et le jour pour qu'elle soit exécutée dans le fichier app.config afin qu'elle puisse être modifiée et uniquement redémarré pour attraper la mise à jour. Récemment, cependant, j'ai vu des articles de blog et ceux qui recommandent d'écrire une application console, puis d'utiliser une tâche planifiée pour l'exécuter.tâche planifiée ou service Windows

J'ai lu beaucoup de messages parlant de ce problème, mais je n'ai pas vu de réponse définitive à propos du processus qui est le meilleur.

Qu'en pensez-vous?

Merci pour vos commentaires.

Répondre

14

S'il s'agit d'une application par semaine, pourquoi gaspiller les ressources pour qu'elle fonctionne en tâche de fond pour le reste de la semaine.

Une application console semble beaucoup plus appropriée.

La règle générale que j'utilise est quelque chose dans ce sens. Je pose d'abord quelques questions.

  1. Fréquence d'exécution
  2. Fréquence des changements à # 1
  3. Mécanisme Déclencher

Au fond d'ici si la fréquence d'exécution est par jour ou moins fréquentes que je vais pencher presque toujours vers une tâche planifiée. Ensuite, en regardant la fréquence des changements, s'il y a une forte demande pour les changements d'horaire, j'essaierai aussi de me pencher sur les tâches planifiées, pour permettre des changements sans codage pour les changements d'horaire. Enfin, si jamais il y a une idée d'un déclencheur autre que le temps, alors je me pencherai vers les services Windows pour aider à "l'épreuve du futur" d'une application. Supposons par exemple que les modifications d'exigences soient exécutées chaque fois qu'un utilisateur dépose un fichier dans le dossier X.

+0

Je suis d'accord pour utiliser les ressources du serveur. Je pense que c'est la direction que je vais suivre. Merci – czuroski

3

Si vous n'avez qu'une seule application et que vous avez besoin de l'exécuter une fois par semaine, le planificateur fonctionnera car il n'est pas nécessaire d'avoir un service et un processus séparés qui seront inactifs la plupart du temps.

6

La règle de base que je suis est la suivante: si vous avez besoin d'être exécuté en permanence car des événements d'intérêt peuvent se produire à tout moment, utilisez un service (ou démon sous UNIX).

Si vous voulez simplement faire quelque chose périodiquement, utilisez une tâche planifiée (ou cron).

Le pneu ici est votre phrase "must be run once a week at a particular time" - aller pour une tâche planifiée.

+0

C'est ce que je pensais. Comme je lisais à travers les messages, c'était le sentiment que j'avais de faire ça. Je vais essayer. Merci – czuroski