Introduction
Les jobs (ou Crons) permettent de lancer des programmes informatiques périodiquement en automatique, pratique pour par exemple envoyer des mails de relance en fin de mois, mettre en place des exports quotidiens, …
Nous allons vous présenter 3 articles décrivant chacun 1 solution pour mettre en place un job en .Net : le service Windows, la tâche planifiée, la tâche de fond dans un site web.
Le service Windows est un job avec programmation par fréquence, par exemple, un programme à lancer toutes les heures.
Comment créer un service Windows ?
- 1. Ajoutez un projet de type « Service Windows » à votre solution .Net.
- 2. Ajoutez le contrôle « timer » adéquat à votre solution.
Par défaut, le timer proposé dans la boîte à outils est le « System.Windows.Forms.Timer ». Or, pour un service Windows, le timer à utiliser est le « System.Timers.Timer ».
Pour configurer votre boîte à outils pour ce projet, cliquez droit dans la boîte à outils et cliquez sur l’option « Choisir les éléments… » du menu contextuel.
Ajoutez ensuite le timer dans le service en le glissant-déposant depuis la boîte à outils.
Puis, cliquez sur le timer pour paramétrer sa fréquence. La fréquence est à renseigner en ms (donc par ex. mettre 3600 pour une exécution toutes les heures).
Puis, double-cliquez sur le timer pour créer automatiquement le code relatif à l’événement « elapsed ».
L’événement « OnStart » est appelé au lancement du service.
L’événement « OnStop » est appelé à l’arrêt du service.
L’événement « Elapsed » est appelé à chaque « tick » du timer (donc dans notre exemple, toutes les erreurs). C’est donc dans cet événement que vous écrirez le code à exécuter périodiquement.
Comment installer et désinstaller le service windows ?
Tout d’abord, ajoutons un élément « ProjectInstaller » à notre service (clic droit sur la fenêtre « design » et option « Ajouter le programme d’installation ».
Configurer ensuite le programme d’installation.
- 1. Ajouter le nom de votre service qui sera affiché dans la liste des services et choisissez votre mode de démarrage (manuel ou automatique).
- 2. Paramétrer les droits d’exécution pour exécuter le service avec le droit « LocalSystem ».
- 3. Puis pour des installations/désinstallations plus « friendly » du service, nous allons créer un assistant de déploiement.
Pour cela, ajoutez un projet « installation et déploiement » à votre solution.
Ajouter à votre projet un élément « sortie de projet » (clic droit sur le projet d’installation > ajouter > Sortie de projet).
Pour configurer la sortie de projet, choisissez votre service comme sortie principale.
Nous allons ensuite l’ajouter comme actions personnalisées. Pour cela, cliquez droit sur le projet, et choisissez Affichage > Actions Personnalisées dans le menu.
Puis cliquez droit sur le dossier « actions personnalisées » et choisissez « Ajouter une action personnalisée ».
Choisissez alors la sortie de projet que nous avons ajoutée ci-avant et cliquez sur « ok ».
Vous devez maintenant voir l’action personnalisée présente dans les 4 dossiers de l’écran.
Vous pouvez alors générer le Service, puis générer le Projet de déploiement.
Vous aurez ensuite les entrées « installer » et « désinstaller » dans le menu contextuel de votre projet de déploiement qui vous permettent d’installer et de désinstaller votre service en local sans passer par des lignes de commandes DOS.
Idem pour une installation en production : générer votre projet en mode « release » pour avoir un fichier d’installation packagée. Il suffira de double-cliquer sur ce fichier pour lancer l’installation avec assistant.
Une fois installé, vous pouvez retrouver votre service dans la liste des services de la machine.
Comment débugger un service Windows ?
Pour débugger un service Windows, installez-le, démarrez-le, puis, nous allons attachez-le processus de débuggage de Visual Studio au Service (Menu Déboguer > Attacher au processus).
Choisissez votre service actif dans la liste des processus. Il vous faudra peut-être pour cela cocher les cases « Afficher les processus de tous les utilisateurs » et « Afficher les processus de toutes les sessions ».
Il se peut que le service apparaisse deux fois dans la liste : une fois en noir et une fois en grisé. Choisissez celui en noir.
Cliquez ensuite sur « Attacher » et vous pouvez maintenant débuguer votre service (points d’arrêt, espion, …).