CoursWindev-id5192

Embed Size (px)

Citation preview

  • 7/28/2019 CoursWindev-id5192

    1/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 avecOuvreest 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".

    http://doc.pcsoft.fr/fr-FR/?3038035&name=ouvre_fonctionhttp://doc.pcsoft.fr/fr-FR/?3038035&name=ouvre_fonctionhttp://doc.pcsoft.fr/fr-FR/?3038035&name=ouvre_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021011&name=info_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021011&name=info_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021011&name=info_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021015&name=dialogue_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021015&name=dialogue_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021015&name=dialogue_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021016&name=saisie_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021016&name=saisie_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021016&name=saisie_fonctionhttp://doc.pcsoft.fr/fr-FR/?3044017&name=hsurerreur_fonctionhttp://doc.pcsoft.fr/fr-FR/?3044017&name=hsurerreur_fonctionhttp://doc.pcsoft.fr/fr-FR/?3044017&name=hsurerreur_fonctionhttp://doc.pcsoft.fr/fr-FR/?3044017&name=hsurerreur_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021016&name=saisie_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021015&name=dialogue_fonctionhttp://doc.pcsoft.fr/fr-FR/?3021011&name=info_fonctionhttp://doc.pcsoft.fr/fr-FR/?3038035&name=ouvre_fonction
  • 7/28/2019 CoursWindev-id5192

    2/6

    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, consultezConfiguration de projet.

    Dveloppement d'un service

    Programmation d'un service

    Le projet cr dispose de deux traitements supplmentaires pour grer le service :

    Traitement Effet

    Excution du

    service (appel en

    boucle)

    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 fonctionServiceDmarre).

    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 fonctionSocketAttendConnexion) puis dclencher

    des actions en rponse cette sollicitation.

    Dans le cas des services qui excutent des actions en continue, il

    convient d'appeler la fonctionServiceTemporise 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 fonctionEnModeService.

    Arrt du service Ce traitement est appel automatiquement lorsque le service reoit

    une demande d'arrt (par un appel la fonctionServiceArrteou lors

    de l'arrt de la machine).

    Ce traitement est appel dans un thread diffrent du traitement

    "Excution du service".

    http://doc.pcsoft.fr/fr-FR/?9000030&name=configuration_projethttp://doc.pcsoft.fr/fr-FR/?9000030&name=configuration_projethttp://doc.pcsoft.fr/fr-FR/?9000030&name=configuration_projethttp://doc.pcsoft.fr/fr-FR/?1000017110&name=servicedemarre_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017110&name=servicedemarre_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017110&name=servicedemarre_fonctionhttp://doc.pcsoft.fr/fr-FR/?3070006&name=socketattendconnexion_fonctionhttp://doc.pcsoft.fr/fr-FR/?3070006&name=socketattendconnexion_fonctionhttp://doc.pcsoft.fr/fr-FR/?3070006&name=socketattendconnexion_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000018712&name=servicetemporise_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000018712&name=servicetemporise_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000018712&name=servicetemporise_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000018710&name=enmodeservice_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000018710&name=enmodeservice_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000018710&name=enmodeservice_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017111&name=servicearrete_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017111&name=servicearrete_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017111&name=servicearrete_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017111&name=servicearrete_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000018710&name=enmodeservice_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000018712&name=servicetemporise_fonctionhttp://doc.pcsoft.fr/fr-FR/?3070006&name=socketattendconnexion_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017110&name=servicedemarre_fonctionhttp://doc.pcsoft.fr/fr-FR/?9000030&name=configuration_projet
  • 7/28/2019 CoursWindev-id5192

    3/6

    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.

  • 7/28/2019 CoursWindev-id5192

    4/6

    L'assistant de gnration :

    du service Windows 32 bits ou 64 bits correspond l'assistant de cration de l'excutable. Pour

    plus de dtails, consultezCration de l'excutable.

    du service Linux correspond l'assistant de cration de l'excutable Linux. Pour plus de dtails,

    consultezCration 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 denombreux 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

    fonctionsServiceDmarreouServiceInfopar 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

    http://doc.pcsoft.fr/fr-FR/?2025002&name=creation_executablehttp://doc.pcsoft.fr/fr-FR/?2025002&name=creation_executablehttp://doc.pcsoft.fr/fr-FR/?2025002&name=creation_executablehttp://doc.pcsoft.fr/fr-FR/?9000114&name=creer_une_application_windev_pour_linuxhttp://doc.pcsoft.fr/fr-FR/?9000114&name=creer_une_application_windev_pour_linuxhttp://doc.pcsoft.fr/fr-FR/?9000114&name=creer_une_application_windev_pour_linuxhttp://doc.pcsoft.fr/fr-FR/?1000017110&name=servicedemarre_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017110&name=servicedemarre_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017110&name=servicedemarre_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017103&name=serviceinfo_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017103&name=serviceinfo_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017103&name=serviceinfo_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017103&name=serviceinfo_fonctionhttp://doc.pcsoft.fr/fr-FR/?1000017110&name=servicedemarre_fonctionhttp://doc.pcsoft.fr/fr-FR/?9000114&name=creer_une_application_windev_pour_linuxhttp://doc.pcsoft.fr/fr-FR/?2025002&name=creation_executable
  • 7/28/2019 CoursWindev-id5192

    5/6

    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

  • 7/28/2019 CoursWindev-id5192

    6/6

    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.