Support de cours pour apprendre à Créer un service avec WinDev
![Support de cours pour apprendre à Créer un service avec WinDev](/images/remos_downloads/CoursWindev-id5192.5192.pdf_thumb_prev.jpg)
Présentation
Qu'est-ce qu'un service ? Un service est une forme spécifique d'application destinée à être exécutée sans intervention de l'utilisateur. Un service peut être configuré pour démarrer automatiquement en même temps que le système d'exploitation et pour fonctionner en tâche de fond. Les services sont également appelés daemons. | |
Dans quels cas utiliser un service ? Un service doit être utilisé pour permettre à une application de répondre à tout moment à une sollicitation externe (lecture sur une socket par exemple). Si le service doit se contenter d'exécuter une tâche de façon répétée, il est préférable de faire une application standard et de lancer cette application dans une tâche planifiée. | |
Différences entre un service et une application • Un service tourne toujours sous l'identité du même utilisateur (configuré lors de son installation) quel que soit l'utilisateur connecté à la machine. • Un service ne peut pas avoir d'interaction directe avec l'utilisateur connecté. L'ouverture d'une fenêtre avecOuvreest possible (par exemple pour créer un traitement graphique sur des images), mais sa fermeture doit être systématique une fois le traitement effectué. De façon générale, il ne doit pas y avoir d'appel de fonction bloquante (Info,Dialogue,Saisie ). • Un service qui utilise une base de données HyperFileSQL et plus généralement les fonctions H* pour l'accès à une base de données doit gérer les conflits (doublons, intégrité, modification, ) grâce à la fonctionHSurErreur. Dans le cas contraire, le service pourra être bloqué en cas de conflit. • Un service peut fonctionner sous l'identité du système d'exploitation lui-même. • Un service n'est pas soumis à l'UAC ou à la virtualisation (à partir de Windows Vista). | |
Création d'un service avec WinDev | |
Création d'un service WinDev permet de créer un service : • soit à partir d'un nouveau projet. ? soit à partir d'un projet existant. Pour créer un service à partir d'un nouveau projet : • Cliquez sur parmi les boutons d'accès rapide. • Dans la roue qui s'affiche, cliquez sur "Projet". |
• L'assistant de création de projet se lance. Dans un des premiers écrans de l'assistant, vous pouvez choisir le type de génération de votre projet. Il suffit de sélectionner "Service Windows" puis la plate-forme d'exécution (Windows ou Linux) et de suivre l'assistant. Par défaut, le projet permettra de générer des services Windows 32 bits. Pour créer un service à partir d'un projet existant, il suffit d'ajouter une nouvelle configuration de projet : sous le volet "Projet", dans le groupe "Configuration de projet", déroulez "Nouvelle configuration". Il est possible de créer : • une configuration de projet de type "Service" (32 bits). • une configuration de projet de type "Service 64 bits". ? une configuration de projet de type "Daemon Linux". Pour plus de détails, consultezConfiguration de projet. | |||||||
Dév | eloppement d'un service | ||||||
Programmation d'un service Le projet créé dispose de deux traitements supplémentaires pour gérer le service : | |||||||
Si le traitement principal est bloqué en attente sur une ressource (par exemple une socket), il appartient au traitement "Arrêt du * service" de détruire la ressource pour débloquer le traitement principal. Note : A partir du début du processus d'arrêt du service, le traitement "Exécution du service" n'est plus appelé en boucle. | |||||||
Remarque : Pour éditer les traitements spécifiques d'un service : sous le volet "Accueil", dans le groupe | |||||||
"Général", déroulez et sélectionnez "Code du projet". | |||||||
Génération d'un service
L'assistant de génération : • du service Windows 32 bits ou 64 bits correspond à l'assistant de création de l'exécutable. Pour plus de détails, consultezCréation de l'exécutable. • du service Linux correspond à l'assistant de création de l'exécutable Linux. Pour plus de détails, consultezCréation de l'exécutable Linux. Le téléchargement automatique du Framework WinDev n'est pas disponible pour les services. |
Création de l'installation d'un service Windows 32 ou 64 bits
|
uniquement à partir de Windows Vista. 8. Sélectionnez le mode de gestion d'erreur en cas d'échec de démarrage du service : • Ignorer les erreurs. • Inscrire les erreurs dans le journal d'événements. • Inscrire les erreurs dans le journal d'événements et redémarrer la machine avec la dernière configuration valide. • Inscrire les erreurs dans le journal d'événements et redémarrer la machine. 9. Indiquez les paramètres de la ligne de commande à donner lors du démarrage du service. Passez au plan suivant. 10. Indiquez les paramètres de gestion des erreurs du service. Plusieurs défaillances successives peuvent être détectées. Pour chacune d'entre elles, sélectionnez le mode de gestion des erreurs parmi les possibilités suivantes : • Ne rien faire. • Redémarrer le service (par défaut). • Redémarrer la machine. • Exécuter un programme. Passez au plan suivant. 11. Indiquez le compte utilisateur sous lequel le service devra s'exécuter: • Compte système local (par défaut). • Compte service local. • Compte service réseau. • Compte utilisateur sélectionné parmi des comptes existants. Remarque : Lorsque le service s'exécute avec le compte système local (par défaut), ce service n'a pas accès au réseau. Si les traitements du service doivent accéder au réseau, il faut nécessairement indiquer pour son exécution le compte service réseau ou un utilisateur du domaine. Passez au plan suivant. 12. Choisissez les paramètres de gestion de l'accès aux bases de données. 13. Choisissez les modules complémentaires : licence, lisez-moi, outils optionnels, désinstallateur. 14. Selon le mode d'installation choisi (autonome ou push), indiquez les options demandées. L'assistant va ensuite générer l'installation du service. | ||||||
Services créés avec les versions antérieures à WinDev 15 | ||||||
| ||||||