2009-07-10 7 views
0

Je dois faire ce qui suit et je me demandais si je pouvais obtenir certains de vos commentaires. Chaque nuit, un fichier est créé à un certain endroit (sur un serveur ftp). Ce que je dois faire est de télécharger ce fichier et l'importer dans un serveur SQL distant via des services Web. Je dois également avoir la possibilité de relancer le processus d'importation (télécharger le fichier et envoyer le contenu au serveur) à tout moment manuellement. J'ai pensé qu'un service Windows serait bon pour cela, mais je ne vois pas comment je peux ré-exécuter manuellement le processus d'importation à tout moment. Quelqu'un at-il fait quelque chose de similaire à cela. Si oui, quelle était la technique utilisée?Besoin d'une direction concernant le service Windows

Merci

+1

Windows Service est une surcharge, jusqu'à ce que vous avez besoin de l'exécuter sur un intervalle régulier .. à la place, je vous suggérerais d'en faire un Schedule Schedule –

+1

Même s'il est nécessaire d'être exécuté sur un intervalle régulier, un service Windows est probablement overkill . Vous pouvez définir une tâche planifiée à exécuter à intervalles réguliers. – adrianbanks

Répondre

4

Un service Windows est un peu exagéré pour cela, sauf peut-être si vous voulez interroger toutes les 10 minutes ou quelque chose pour le fichier. Sinon, vous devriez vraiment utiliser une tâche planifiée à la place.

Si vous y allez avec un service Windows, vous pouvez faire un simple Custom Command pour l'obtenir à interroger. Remoting, IPC, etc. fonctionneraient également - mais sont considérablement poids plus lourd.

+0

Je suis vraiment nouveau à la création de tâches planifiées. Dois-je créer une application Windows et ensuite la tâche exécuter sur une minuterie ou quelque chose? Toute autre information à ce sujet serait utile. Merci – zSynopsis

2

La classe Service Controller pourrait vous être utile. Vous pouvez l'utiliser pour exécuter une commande dans votre service en cours à partir d'une application distincte "Front end".

0

Vous pouvez utiliser quelque chose comme SyncBackSE pour créer un profil pour télécharger votre fichier via FTP, puis exécuter un événement After pour faire votre importation (vous pouvez spécifier ce que vous voulez exécuter). Cela peut être mis sur un calendrier (fonctionne via les tâches planifiées de Windows), mais vous pouvez également l'exécuter manuellement (sélectionnez le profil, puis Exécuter). Pas vraiment de programmation requise, je suppose que c'est plus une réponse d'administrateur de serveur à votre question.

0

Si vous voulez parler à un service Windows à partir d'une application de bureau (pour lui indiquer de faire votre exécution manuelle), alors la manière canonique de faire cela est d'utiliser des canaux nommés. Ils sont assez simples à mettre en œuvre, et les canaux traversent les frontières de session/bureau, ce qui est nécessaire lorsque vous parlez à un service.

0

Je suis d'accord que vous pourriez le faire grâce à une tâche planifiée. Mais si vous voulez vraiment utiliser un service Windows à la place, vous pouvez exécuter le programme avec un paramètre de ligne de commande, comme "MyService.exe -onetime". Ensuite, dans votre fonction Main, vous pouvez vérifier si ce paramètre de ligne de commande a été inclus. Si c'était le cas, vous pourriez passer le code habituel et simplement lancer l'importation à la place.