2009-12-15 4 views
3

J'ai écrit une application de console que envoie des rapports de MS aux email .. (la raison était que je pourrais la vérifier facilement si cela fonctionne) Je veux que ceci fonctionne à tous les jours à 6 heures.Dois-je créer un service Windows pour exécuter mon code C# dans un planning?

Mon idée était de écrire un service (donc nooone aura besoin d'être connecté et le service se déroulera). Donc, je voudrais appeler la méthode statique directement dans un WebService.

J'ai une solution avec 1 fichier de projet qui est mon application console (avec les paramètres, de nombreuses références .. etc). J'aimerais ajouter un autre projet - Service Windows. Ma question est .. comment faire cela facilement, donc je n'aurais pas à copier toutes les classes etc pour le projet de service Windows?

Ou suis-je totalement en retrait? :)

Merci!

+0

Utilisez-vous SQL Server? SQL Reporting Services a cette fonctionnalité intégrée. – duckworth

+0

oui je suis .. mais c'est beaucoup plus compliqué .. je ne peux pas utiliser la fonctionnalité intégrée .. je l'envoie à MS SharePoint aussi .. à un WebService etc. –

+0

et J'ai une logique de décision personnalisée .. quoi envoyer, comment et quand –

Répondre

10

Cela ressemble à une surutilisation pour utiliser un service Windows pour envoyer un courriel une fois par jour. Pourquoi ne pas simplement planifier une tâche dans le planificateur de tâches?

+0

Le planificateur de tâches sera-t-il exécuté avant que quelqu'un ne se connecte? ou en arrière-plan? Comment ça marche exactement? Merci –

+2

Oui, il fonctionne sous le service "Planificateur de tâches" – duckworth

+0

Vous devez seulement fournir les paramètres d'authentification appropriés, et la tâche sera exécutée. – Cheeso

0

Créez une bibliothèque de classes et placez les classes partagées dans cette bibliothèque.

1

Vous allez devoir refactoriser votre application. Je recommanderais trois projets -

Console App - Instancie et effectue toute configuration nécessaire sur votre objet logique métier puis achemine toutes les sorties vers la console. Utilisez ceci pour déboguer et tester

Logique métier - Extrayez toute la logique de votre application dans cette classe.

Service - Fondamentalement le même que l'application de console sauf que je recommanderais d'envoyer des erreurs à l'enregistreur d'événements global. De cette façon, si vos bombes de service, vous pouvez trouver pourquoi.

Vous pouvez utiliser ce modèle pour tous les autres services que vous développez.