2009-06-24 5 views
0

J'ai actuellement une application Windows qui est automatisée et fonctionne tous les jours. Le but est d'accéder à un webservice pour télécharger un ensemble de données, en l'insérant dans la base de données SQL 2005.Une application Windows Service est-elle la bonne approche

Une application de service Windows est-elle appropriée dans cette situation, serait-elle plus flexible et fonctionnerait-elle mieux?

Répondre

5

Vous pouvez certainement l'avoir comme un service, mais je ne pense pas que vous allez en tirer profit. Comme un service est toujours en cours d'exécution, ils sont normalement utilisés pour les applications qui doivent être exécutées, car ils vérifient constamment une condition (en attente d'accès distant, vérification toutes les n minutes d'informations dans une base de données, etc.).

Puisque le vôtre fonctionne une fois par jour, vous ne disposerez d'aucun avantage si vous le changez. Si votre tâche automatisée est configurée correctement, elle devrait fonctionner si la machine est allumée, comme un service. L'avantage d'avoir une application Windows (console spécifiquement) sur un service est que si quelque chose échoue, vous pouvez simplement redémarrer l'application et l'exécuter. Ce ne sera pas si facile avec un service, car le code supplémentaire devra être dans le programme pour s'assurer qu'il ne fonctionne que plusieurs fois (dans votre cas une fois) par jour. Vous ne pourrez probablement pas l'exécuter au démarrage, car vous devez prendre en compte le redémarrage du serveur. Cela signifie que si votre serveur tombe en panne lorsque le processus est supposé s'exécuter, vous devrez savoir comment "tromper" le programme en lui faisant croire qu'il devrait exécuter le processus uniquement pour cette période. Les applications de Windows n'en souffrent pas, car elles se terminent une fois le processus terminé, donc il n'y a probablement pas de code supplémentaire pour l'empêcher d'exécuter à nouveau le processus.

+0

À peu près ce que je pensais, donc la réponse est probablement, si je veux que la mise à jour soit fréquente, intervalles réguliers, oui, quelques fois par jour coller avec Windows App – Stuart

+0

Ma règle générale avec un service Windows est que si je J'ai besoin de faire quelque chose qui nécessite soit de l'exécuter chaque minute, le programme doit être constamment en cours d'exécution pour vérifier les conditions, je crée un service. Sinon, j'essaie de le laisser comme une application régulière. – kemiller2002

2

Un service Windows vous permet d'exécuter votre tâche même si aucun utilisateur n'est connecté activement. Je dirais, pour une tâche comme celle-là, un service Windows est plus approprié. Je doute cependant qu'il y aurait une amélioration des performances.

+2

FYI - Une tâche planifiée régulière peut également fonctionner correctement si aucun utilisateur n'est connecté. –

+0

Il doit s'agir d'une application de console non-GUI. , droite? –

+0

@Thorsten & Eric - c'est vrai, l'application Windows en cours d'exécution est autonome – Stuart

1

S'il suffit de le faire une fois par jour (ou périodiquement), le service est un gaspillage à mon avis. La plupart du temps, ce serait simplement ne rien faire. Il n'y a rien à propos des services en particulier qui améliorerait les performances, donc je recommande de le laisser simplement comme une vieille application et d'utiliser le programmateur pour l'exécuter une fois par jour.

0

Si vous insérez les données dans SQL Server, vous avez de toute évidence une dépendance à ce sujet. J'étudierais la planification en utilisant l'Agent SQL. En fonction de vos besoins de traitement, vous pouvez trouver que vous pouvez faire le lot entier en utilisant SQL Server Integration Services (SSIS) qui est bien documenté sur la façon de planifier avec SQL Server.

Je sais que vous mentionnez que vous avez déjà écrit ceci. Mais avec SSIS/SQL Agent, vous bénéficiez d'un niveau de surveillance 'gratuitement' et vous trouverez peut-être peu d'effort pour répliquer votre code actuel. De plus, un DBA peut maintenir votre code très facilement sans avoir besoin d'accéder au code source, etc.

Questions connexes