Vous êtes sur la page 1sur 6

Prsentation

Qu'est-ce qu'un service ? Un service est une forme spcifique d'application destine tre excute sans intervention de l'utilisateur. Un service peut tre configur pour dmarrer automatiquement en mme temps que le systme d'exploitation et pour fonctionner en tche de fond. Les services sont galement appels daemons. Dans quels cas utiliser un service ? Un service doit tre utilis pour permettre une application de rpondre tout moment une sollicitation externe (lecture sur une socket par exemple). Si le service doit se contenter d'excuter une tche de faon rpte, il est prfrable de faire une application standard et de lancer cette application dans une tche planifie. Diffrences entre un service et une application

Un service tourne toujours sous l'identit du mme 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 fentre avec Ouvre est possible (par exemple pour crer un traitement graphique sur des images), mais sa fermeture doit tre systmatique une fois le traitement effectu. De faon gnrale, il ne doit pas y avoir d'appel de fonction bloquante (Info, Dialogue, Saisie...).

Un service qui utilise une base de donnes HyperFileSQL et plus gnralement les fonctions H* pour l'accs une base de donnes doit grer les conflits (doublons, intgrit, modification, ...) grce la fonctionHSurErreur. Dans le cas contraire, le service pourra tre bloqu en cas de conflit.

Un service peut fonctionner sous l'identit du systme d'exploitation lui-mme. Un service n'est pas soumis l'UAC ou la virtualisation ( partir de Windows Vista).

Cration d'un service avec WinDev


Cration d'un service WinDev permet de crer un service :

soit partir d'un nouveau projet. soit partir d'un projet existant.

Pour crer un service partir d'un nouveau projet :

Cliquez sur

parmi les boutons d'accs rapide.

Dans la roue qui s'affiche, cliquez sur "Projet".

L'assistant de cration de projet se lance.

Dans un des premiers crans de l'assistant, vous pouvez choisir le type de gnration de votre projet. Il suffit de slectionner "Service Windows" puis la plate-forme d'excution (Windows ou Linux) et de suivre l'assistant. Par dfaut, le projet permettra de gnrer des services Windows 32 bits. Pour crer 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", droulez "Nouvelle configuration". Il est possible de crer :

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 dtails, consultez Configuration de projet.

Dveloppement d'un service


Programmation d'un service Le projet cr dispose de deux traitements supplmentaires pour grer le service : Traitement Excution du service (appel en boucle) Effet Ce traitement est le traitement principal du service. Il est appel en boucle quand le service est dmarr (automatiquement au boot ou par un appel la fonction ServiceDmarre). Dans la majorit des cas, ce traitement va se mettre en attente d'une sollicitation extrieure (par exemple en crant une socket et en appelant ensuite la fonction SocketAttendConnexion) puis dclencher des actions en rponse cette sollicitation. Dans le cas des services qui excutent des actions en continue, il convient d'appeler la fonction ServiceTemporise chaque passage dans ce traitement afin de ne pas consommer toutes les ressources processeur de la machine. Note : Lorsque du code doit tre partag entre un service et une application (par exemple une classe), il est possible de connatre le mode d'excution grce la fonction EnModeService. Arrt du service Ce traitement est appel automatiquement lorsque le service reoit une demande d'arrt (par un appel la fonction ServiceArrte ou lors de l'arrt de la machine). Ce traitement est appel dans un thread diffrent du traitement "Excution du service".

Si le traitement principal est bloqu en attente sur une ressource (par exemple une socket), il appartient au traitement "Arrt du * service" de dtruire la ressource pour dbloquer le traitement principal. Note : A partir du dbut du processus d'arrt du service, le traitement "Excution du service" n'est plus appel en boucle. Remarque : Pour diter les traitements spcifiques d'un service : sous le volet "Accueil", dans le groupe "Gnral", droulez et slectionnez "Code du projet".

Gnration d'un service


Trois modes de gnration d'un service sont disponibles :

Gnrer le service Windows (32 bits). Gnrer le service Windows (64 bits). Gnrer le deamon Linux.

Ces options sont disponibles dans le menu de gnration de l'application.

Un assistant de gnration vous guide dans la gnration du service. Remarque : Si la gnration propose ne correspond pas la configuration de projet en cours, WinDev propose automatiquement de crer une nouvelle configuration de projet correspondant la gnration voulue.

L'assistant de gnration :

du service Windows 32 bits ou 64 bits correspond l'assistant de cration de l'excutable. Pour plus de dtails, consultez Cration de l'excutable. du service Linux correspond l'assistant de cration de l'excutable Linux. Pour plus de dtails, consultez Cration de l'excutable Linux.

Le tlchargement automatique du Framework WinDev n'est pas disponible pour les services.

Cration de l'installation d'un service Windows 32 ou 64 bits


Pour crer l'installation d'un service Windows 32 ou 64 bits : 1. Droulez l'icne de gnration parmi les boutons d'accs rapide et slectionnez l'option "Crer la procdure d'installation du service". Remarque : si la configuration en cours ne correspond pas la configuration du service, cette option est disponible dans le menu "Autres gnrations". 2. La premire partie de l'assistant vous guide dans la gnration du service (voir paragraphe prcdent). Si la configuration en cours est un service 32 bits, la gnration est ralise en 32 bits. Si la configuration en cours est un service 64 bits, la gnration est ralise en 64 bits. 3. Choisissez le mode d'installation :

Installation autonome : cette installation peut tre excute directement sur le poste o le service doit tre install. Installation en Push : cette installation permet de dployer le service distance sur de nombreux postes connects en rseau.

4. Indiquez le rpertoire o sera install par dfaut le service. Passez au plan suivant. 5. Choisissez les fichiers installer ainsi que le mode d'installation du framework. 6. Dans l'cran "Description du service", prcisez :

Le nom du service ( utiliser en programmation dans les fonctions ServiceDmarre ou ServiceInfo par exemple). Le nom complet du service (affich dans la colonne "Nom" du gestionnaire de services). La description du service (affich dans la colonne "Description" du gestionnaire de services).

Passez au plan suivant. 7. Choisissez les paramtres de dmarrage du service:

Automatique (par dfaut) Manuel Dsactiv

Remarque : Il est possible de dmarrer le service en mode diffr. Cette fonctionnalit est disponible

uniquement partir de Windows Vista. 8. Slectionnez le mode de gestion d'erreur en cas d'chec de dmarrage du service :

Ignorer les erreurs. Inscrire les erreurs dans le journal d'vnements. Inscrire les erreurs dans le journal d'vnements et redmarrer la machine avec la dernire configuration valide. Inscrire les erreurs dans le journal d'vnements et redmarrer la machine.

9. Indiquez les paramtres de la ligne de commande donner lors du dmarrage du service. Passez au plan suivant. 10. Indiquez les paramtres de gestion des erreurs du service. Plusieurs dfaillances successives peuvent tre dtectes. Pour chacune d'entre elles, slectionnez le mode de gestion des erreurs parmi les possibilits suivantes :

Ne rien faire. Redmarrer le service (par dfaut). Redmarrer la machine. Excuter un programme.

Passez au plan suivant. 11. Indiquez le compte utilisateur sous lequel le service devra s'excuter:

Compte systme local (par dfaut). Compte service local. Compte service rseau. Compte utilisateur slectionn parmi des comptes existants.

Remarque : Lorsque le service s'excute avec le compte systme local (par dfaut), ce service n'a pas accs au rseau. Si les traitements du service doivent accder au rseau, il faut ncessairement indiquer pour son excution le compte service rseau ou un utilisateur du domaine. Passez au plan suivant. 12. Choisissez les paramtres de gestion de l'accs aux bases de donnes. 13. Choisissez les modules complmentaires : licence, lisez-moi, outils optionnels, dsinstallateur. 14. Selon le mode d'installation choisi (autonome ou push), indiquez les options demandes. L'assistant va ensuite gnrer l'installation du service.

Services crs avec les versions antrieures WinDev 15

Services crs avec l'exemple "WD Service NT" Si vous aviez utilis l'exemple "WDService NT" pour crer un service avec une version antrieure WinDev 15, vous pouvez le convertir en un service WinDev de la faon suivante : 1. Ouvrez le projet dans WinDev (version 15 ou suprieure). 2. Crez une nouvelle configuration de type "Service Windows". 3. Dans le traitement "Initialisation" du projet, appelez la procdure "InitService" de votre projet. 4. Dans le traitement "Excution du service", appelez la procdure "Service" de votre projet. 5. Dans le traitement "Arrt du service", appelez la procdure "FinService" de votre projet.