[Service NT]

Le
Jean-Yves BURLOT
Bonjour,

Je cherche à développer un service NT (compatible Win 2K et XP) sous
Windev (mini version 10).
Es ce possible et quels sont les pièges à éviter.
Peut-on gérer le service avec les outils windows.

Si la création et la gestion de service est impossible avec l'outil
windev, peut-on trouver une solution médiane qui remplace un service
par un système équivalent entièrement développer sous windev.

Je vous remercie

@+

--
Jean-Yves BURLOT
suivre ce lien pour répondre :
http://cerbermail.com/?zbQ7wrKUbu
;-)
--
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
patrice
Le #14554771
service possible, d'abord décider de l'architecture:
- utiliser wdservice ou langageexterne pour appeler une wdl
attention dans ce cas, le mécanisme des exception ne fonctionne pas toujours
(bien testé ce point si nécessaire)
- créer un exe normal et le lancer comme un service
dans ce cas, faire gaffe à la consommation cpu et aux arrets du service que
l'on ne peut pas intercepter

dans tous les cas, ne pas oublier que l'utilisation de l'écran ou du réseau
sont mutuellement exclusif

"Jean-Yves BURLOT" news:
Bonjour,

Je cherche à développer un service NT (compatible Win 2K et XP) sous
Windev (mini version 10).
Es ce possible et quels sont les pièges à éviter.
Peut-on gérer le service avec les outils windows.

Si la création et la gestion de service est impossible avec l'outil
windev, peut-on trouver une solution médiane qui remplace un service
par un système équivalent entièrement développer sous windev.

Je vous remercie

@+

--
Jean-Yves BURLOT
suivre ce lien pour répondre :
http://cerbermail.com/?zbQ7wrKUbu
;-)
--




patrice
Le #14554761
Je vous conseille également :

- si possible, autoriser l'écran pour le service (dans le cas d'apparition
de fenetre d'exception non gérée)
- de developper un service de surveillance ou d'utiliser les mécanismes
windows de redémarrage automatique
(desfois, ca s'arrete, on sait pas pourquoi)
- d'arreter et redémarrer périodiquement le service


"Jean-Yves BURLOT" news:
Bonjour,

Je cherche à développer un service NT (compatible Win 2K et XP) sous
Windev (mini version 10).
Es ce possible et quels sont les pièges à éviter.
Peut-on gérer le service avec les outils windows.

Si la création et la gestion de service est impossible avec l'outil
windev, peut-on trouver une solution médiane qui remplace un service
par un système équivalent entièrement développer sous windev.

Je vous remercie

@+

--
Jean-Yves BURLOT
suivre ce lien pour répondre :
http://cerbermail.com/?zbQ7wrKUbu
;-)
--




Romain PETIT
Le #14554751
Jean-Yves BURLOT a formulé ce lundi :
Bonjour,



Bonjour,

Je cherche à développer un service NT (compatible Win 2K et XP) sous
Windev (mini version 10).
Es ce possible et quels sont les pièges à éviter.
Peut-on gérer le service avec les outils windows.



Oui, mais ce n'est pas le moyen le plus simple.

Si la création et la gestion de service est impossible avec l'outil
windev, peut-on trouver une solution médiane qui remplace un service
par un système équivalent entièrement développer sous windev.



Oui.
http://groups.google.com/group/fr.comp.developpement.agl.windev/msg/d1680b4a70cf9cd5?hlfr&

Plus de réponses sur XYNTService :
http://groups.google.fr/group/fr.comp.developpement.agl.windev/search?group=fr.comp.developpement.agl.windev&q=xyntservice

Perso, j'ai encapuslé XTNYService dans une classe avec FichierDansExe
de Michel Fages.

Il me suffit de rajouter dans un projet une classe, quelques lignes de
codes et j'ai un service dont l'exe s'extrait, s'installe, se lance,
monitore l'appli et fonctionne sans problème et sans soucis d'upgrade
de version (cd WDservice qu'il faut recompiler).

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
patrice
Le #14551531
"Romain PETIT" news:

> Si la création et la gestion de service est impossible avec l'outil
> windev, peut-on trouver une solution médiane qui remplace un service
> par un système équivalent entièrement développer sous windev.

Oui.



http://groups.google.com/group/fr.comp.developpement.agl.windev/msg/d1680b4a70cf9cd5?hlfr&




attention que, dans ce cas, l'xyntservice terminera le logiciel windev "à
l'arrache" à la fin du service (arret service, arret machine)
donc vaut mieux pas avoir une écriture HF en cours ou un fichier non flushé
à ce moment la .....
Jean-Yves BURLOT
Le #14551511
patrice a utilisé son clavier pour écrire :
"Romain PETIT" news:

Si la création et la gestion de service est impossible avec l'outil
windev, peut-on trouver une solution médiane qui remplace un service
par un système équivalent entièrement développer sous windev.



Oui.
http://groups.google.com/group/fr.comp.developpement.agl.windev/msg/d1680b4a70cf9cd5?hlfr&




attention que, dans ce cas, l'xyntservice terminera le logiciel windev "à
l'arrache" à la fin du service (arret service, arret machine)
donc vaut mieux pas avoir une écriture HF en cours ou un fichier non flushé
à ce moment la .....



Pour mon besoin, il n'y aura que des accès sur des fichiers textes
servant à définir des informations basiques sur le poste

Je vous remercie tous les deux et je pense opter pour la solution de
Romain toujours aussi pragmatique.

--
Jean-Yves BURLOT
suivre ce lien pour répondre :
http://cerbermail.com/?zbQ7wrKUbu
;-)
--
Daniel
Le #14551501
patrice a écrit :
"Romain PETIT" news:
Si la création et la gestion de service est impossible avec l'outil
windev, peut-on trouver une solution médiane qui remplace un service
par un système équivalent entièrement développer sous windev.


Oui.



http://groups.google.com/group/fr.comp.developpement.agl.windev/msg/d1680b4a70cf9cd5?hlfr&

attention que, dans ce cas, l'xyntservice terminera le logiciel windev "à
l'arrache" à la fin du service (arret service, arret machine)
donc vaut mieux pas avoir une écriture HF en cours ou un fichier non flushé
à ce moment la .....





XYNTService envoie 2 signaux :
Le premier est WM_quit qui demande au logiciel mis en service de se fermer.

Si la fermeture du logiciel ne se fait pas dans ce cas il envoie un
TerminateProcess.

Je ne comprends pas le "à l'arrache".

--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Romain PETIT
Le #14551491
patrice avait énoncé :

attention que, dans ce cas, l'xyntservice terminera le logiciel windev "à
l'arrache" à la fin du service (arret service, arret machine)
donc vaut mieux pas avoir une écriture HF en cours ou un fichier non flushé
à ce moment la .....



Non, pas du tout, XYNTService fait tout proprement...
Il suffit d'inertcepter le WM_QUIT envoyé à l'appli pour que celle-ci
soit au courant de l'arret...

http://groups.google.fr/group/fr.comp.developpement.agl.windev/browse_thread/thread/9fd35cc5424b99da/5734e01c6608ee3b#5734e01c6608ee3b

Et ça, on peut le savoir parce qu'on a les sources de XYNTService...

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
patrice
Le #14551481
"Daniel" news:478b49df$0$27593$

XYNTService envoie 2 signaux :
Le premier est WM_quit qui demande au logiciel mis en service de se


fermer.

Si la fermeture du logiciel ne se fait pas dans ce cas il envoie un
TerminateProcess.

Je ne comprends pas le "à l'arrache".




s'il s'agit d'un exe qui tourne comme un service, l'appli ne sera pas un
menu en train d'attendre une action utilisateur
mais plutot une boucle sans fin, ou un timer périodique
donc le wm_quit sera sans effet.
le terminateprocess arrete le process . il ferme bien tous les objets
ouvert, mais beaucoup d'action sur des fichiers sont des séquences qui ne
doivent pas etre interrompue
par exemple, ecrire fichier data, mettre à jour fichier index
si l'exe est arreté au milieu de ca, ca laisse la base dans un état
dramatique (et sans message d'erreur à ce moment la)
Romain PETIT
Le #14551451
patrice a formulé la demande :

s'il s'agit d'un exe qui tourne comme un service, l'appli ne sera pas un
menu en train d'attendre une action utilisateur
mais plutot une boucle sans fin, ou un timer périodique
donc le wm_quit sera sans effet.



En théorie, le WM_QUIT devrait être trappable.
Mais effectivement, il y a un problème (en tout cas en WD7.5).
J'ai essayé de recompiler XYNTService en passant un WM_CLOSE, ça ne
passe pas non plus...
Cf. :
http://www.codeproject.com/KB/system/xyntservice.aspx?msg#50671)

Je pense que c'est plus un problème relatif aux applis Windev, comme le
fait par exemple que le code de fermeture de session Windows n'est pas
exécuté si le projet ne contient aucune fenetre :
http://www.windasso.org/cgi-bin/gbug.exe?EXEC=CONS&NUM#3


le terminateprocess arrete le process . il ferme bien tous les objets
ouvert, mais beaucoup d'action sur des fichiers sont des séquences qui ne
doivent pas etre interrompue
par exemple, ecrire fichier data, mettre à jour fichier index
si l'exe est arreté au milieu de ca, ca laisse la base dans un état
dramatique (et sans message d'erreur à ce moment la)



Solution simple : reprendre le code XYNTService, et lors de l'arret du
service, utiliser un autre type de dialogue avec l'appli Windev
(utilisation d'un fichier, d'une Socket, d'un pipe...)

Je vais essayer de creuser un peu tout ça quand j'aurais un peu de
temps.

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
patrice
Le #14551441
"Romain PETIT" news:
En théorie, le WM_QUIT devrait être trappable.


lapalissade: tout message n'est recu que s'il est lu.
tout programme windows à la structure:
while (getmessage()) dispatchmessage()
donc pendant le traitement d'un message , un thread ne peut traiter d'autre
message

Solution simple : reprendre le code XYNTService, et lors de l'arret du
service, utiliser un autre type de dialogue avec l'appli Windev
(utilisation d'un fichier, d'une Socket, d'un pipe...)




tout a fait.
amha, la solution la plus simple:
- temporiser xyntservice pour qu'il ne terminate que si x secondes se
sont écoulés
- modifier l'exe pour lui faire tester le wm_quit (donc faire une
fenetre principale) et faire les traitements :
soit sur timer et ne pas durer plus de x secondes à chaque fois
soit sur thread, et le traitement du wm_quit doit synchroniser le
thread

sinon pour notifer un programme par un autre, le plus simple/rapide est
d'utiliser les signaux (api createevent, openevent, waitforsingleevent)
Publicité
Poster une réponse
Anonyme