IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Paramétrage d'un service windows


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 49
    Points : 25
    Points
    25
    Par défaut Paramétrage d'un service windows
    Bonjour,
    Je viens récemment de terminer mon service servant à :
    - rappatrier un fichier de gestion de personnel depuis un serveur distant
    - créer un parseur capable et conserver seulement les informations et non les caractères spéciaux
    - lancer un SQL LOADER pour faire un insertion dans une base de donnée Oracle
    - éxécuter une instruction MERGE pour mettre à jour ou insérer les données parsées depuis ma table temporaire vers ma table principale
    Et voila
    Donc maintenant je dois créer un programme capable de paramétrer se service(par exemple: choisir quel fichier je veux rappatrier, modifier le fichier de controle du SQL LOADER,...) En clair je dois quasiment gérer tout les paramètres de mon application et je ne sais pas par où commencer à chercher et ou chercher.
    Si quelqu'un a des connaissances ou des tuyaux, je suis très preneurs !

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    va falloir être plus précis sur ce que tu veux faire, parce que là je ne sais pas ce que tu attends comme info.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    bonjour, je travaille avec ttamttam sur ce projet, je connait donc les besoins:

    il s'agit de créer une IHM permettant à un utilisateur de modifier certaines variables à l'intérieur du service windows(qui s'exécute toutes les 6heures), par exemple:
    l'utilisateur rentre dans une textbox l'adresse du fichier à rappatrier via ftp et la valeur de la variable 'fich_uri' est modifiée directement dans le service

    Le truc c'est que nous ne savons pas du tout comment nous y prendre et par où commencer , c'est pourquoi nos explications ne sont peut être pas très claires...

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Exposer une interface WCF dans le service, c'est de loin le plus simple.

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Bon il y a deux ou trois post qui circule sur la communication inter-process sur le forum, ils devraient encore être sur la première page.
    Regardez les, vous verrez des choses qui vous intéresse.

    J'ai été à votre place (besoin de communiquer entre un service et une application) mais finalement pour différentes raisons, cela ne s'est pas fait.
    A l'époque j'avais estimé que la meilleur façon de faire pour moi, serait d'ouvrir un port sur lequel écouterais le service, et un autre surlequel il enverrais des donnés.
    De même pour l'autre application.
    Bien sur pour communiquer, l'un des softs envois les donnés sur le port d'écoute de l'autre, et pour la réponse on fait l'inverse sur les deux autres ports.

    Pour ouvrir les ports j'aurais utiliser les Sockets (je ne sais pas où ils sont dans les versions récentes de .net mais sur les autres sujets on en parle).

    Après pour l'échange d'information, il faut choisir un protocole de communication pour échanger les données. Vous pouvez prendre TCP/IP, SIP, ou tout autre protocole qui serait adapté à votre besoin.

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Exposer une interface WCF dans le service, c'est de loin le plus simple.
    Connais pas. MS à l'air d'avoir fait pas mal de chose coté service depuis la version 1.1 du framework.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    J'ai fait un raccourci : en gros, il expose ses méthodes d'administration, les décrits dans une interface, mets les attributs ServiceContract sur l'interface et ServiceBehavior sur l'implémentation, puis il fait le client qui connecte le service et appel les méthodes en question.

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    J'ai fait un raccourci : en gros, il expose ses méthodes d'administration, les décrits dans une interface, mets les attributs ServiceContract sur l'interface et ServiceBehavior sur l'implémentation, puis il fait le client qui connecte le service et appel les méthodes en question.
    Un peu comme un objet com en fait ?

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Un peu comme un objet com en fait ?
    Euh ... non, c'est du WCF, pas du COM.

    Tu peux le faire aussi en Remoting, mais c'est un peu plus lourd.

  10. #10
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    C'est comme un web service qui tournerait au sein de ton service.

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par The_badger_man Voir le message
    C'est comme un web service qui tournerait au sein de ton service.
    Ok parfait, très intéressant, je n'ai pas besoin de faire de service pour l'instant mais je note dans un coin que WCF (World Championship FofoBestWriter ) existe pour plus tard.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    Nous revoila,
    on vient d'avoir une réunion avec notre chef de projet et il nous a expliqué ce qu'il attendait de nous !
    en fait on doit faire deux programmes distincts : notre service et notre application de paramétrage !
    La relation entre les deux sera un fichier XML qui sera généré et modifiable par notre appli de paramétrage et notre service chargera à intervale régulié les données du fichier XML.
    Tous les paramètres de notre service doivent etre modifiables (url du serveur de rapatriement du fichier, nom du fichier à rapatrier, fichier de controle du SQL loader, timer d'éxécution du service et du parçage du fichier,...)
    Le fichier XML contiendra tous les paramètres de notre service.
    Si vous aviez des suggestions et ou des orientations de tuto et autres, nous sommes tout ouïes

  13. #13
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Suggestion :
    XPath pour la gestion de votre fichier xml. Et le liens pour plus de requêtes : http://jerome.developpez.com/xmlxsl/xpath/?lpage=paths

    Pour l'utilisation de votre fichier par vos deux applications : ATTENTION à la tentative d'accés au fichier par vos deux applications.

    Ma suggestions du jour :
    Utilisé FileSystemWatcher, dans le service, pour surveiller la présence ou non du fichier dans un répertoire.
    S'il est présent le service le parse et lit les informations qu'il contient sinon il ne fait rien.
    S'il est modifié, il fait une mise à jour.
    De l'autre coté votre application de configuration crée un nouveau fichier temporaire dans un répertorie temporaire, et une fois que l'utilisateur à fini ses modifications (il fait un save), votre application remplace le fichier xml surveiller par le service par ce nouveau fichier.

  14. #14
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par ttamttam Voir le message
    Nous revoila,
    on vient d'avoir une réunion avec notre chef de projet et il nous a expliqué ce qu'il attendait de nous !
    en fait on doit faire deux programmes distincts : notre service et notre application de paramétrage !
    La relation entre les deux sera un fichier XML qui sera généré et modifiable par notre appli de paramétrage et notre service chargera à intervale régulié les données du fichier XML.
    Curieux choix. Pourquoi ne pas modifier en temps réel les propriétés du service ?

  15. #15
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    C'est notre chef de projet qui nous l'impose donc a pô le choix !
    Le service doit tourner tout le temps, on ne doit pas l'arréter pour modifier les paramètres, tout doit pouvoir tourner en meme temps et prendre les modifications en compte en temps réel, du moins quand le timer le dira.
    Car il nous faut un timer pour le chargement des données par le service et un timer pour le chargement de tout le service, sachant que les deux ne devant pas s'effectuer en meme temps.

  16. #16
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par ttamttam Voir le message
    C'est notre chef de projet qui nous l'impose donc a pô le choix !
    Le service doit tourner tout le temps, on ne doit pas l'arréter pour modifier les paramètres,
    Ca c'est logique, mais le passage de paramètres par chargement régulier d'un fichier Xml me semble inutilement lourd.

    Car il nous faut un timer pour le chargement des données par le service et un timer pour le chargement de tout le service, sachant que les deux ne devant pas s'effectuer en meme temps.
    Manifestement votre CP ne maitrise pas bien les arcannes des articulations WCF/Services.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Manifestement votre CP ne maitrise pas bien les arcannes des articulations WCF/Services.
    Tu as peut etre raison mais je ne sais pas vraiment par ou commencer.
    Je viens de lire un tuto sur XML car je ne la maitrise pas forcément bien et donc je viens de créer un fichier avec tous les paramètres de notre service.
    Si tu as des pistes à nous indiquer ou des conseils !

  18. #18
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 49
    Points : 25
    Points
    25
    Par défaut
    Merci ced600, j'avais pas vu ton post et il est ce qu'il nous fallait pour nous diriger dans notre developpement.
    (DrZoune est tombé amoureux de toi )
    On va étudier ca à fond.

  19. #19
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Curieux choix. Pourquoi ne pas modifier en temps réel les propriétés du service ?
    Aucun accés au service depuis l'extérieur, les possibilités de piratage du service devienne limité par exemple.
    Ainsi on ne peut pas détourner l'utilisation du service, tout ce que l'on peut faire c'est jouer avec sa configuration, mais s'il est bien développé, il ne pourra rien faire d'imprévu.

    Bon ok avec WCF si tu n'expose que les propriétés du service, alors tu n'as pas trop de problème.

    Mais en fait je comparais avec mon autre idée de faire du TCP/IP.

  20. #20
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par ttamttam Voir le message
    Merci ced600, j'avais pas vu ton post et il est ce qu'il nous fallait pour nous diriger dans notre developpement.
    (DrZoune est tombé amoureux de toi )
    On va étudier ca à fond.
    lol

    Je sais cela fait celà avec tout le monde, comment ne pas tomber amoureux d'un dieu
    Boum !!!! -> ça c'est la tête qui explose

    Nan juste que j'ai déjà pensé à ce genre de solution car j'ai été proche de devoir faire quelque chose dans le genre.

    Mais vu de la description du WCF que propose Bluedeep, je ne pense pasque cela sera plus bloquant que l'utilisation de fichier XML.
    En effet dans les deux cas, tu devra mettre ton application en pause 1 seconde le temps de prendre en compte les nouvelles valeur.

    Dans le cas de WCF, il suffirait que tu expose une seule méthode update qui prend en paramètre une liste comprenant tes valeurs.
    Ton application de configurations se chargera de créer la liste et d'appeler la méthode update du service.

    En utilisant par exemple le state design pattern (patron de conception) sur ton service, et les events, tu pourras dans update mettre en état pause ton service, modifier tes paramètres, et remettre en route le service.
    Je pense même que cela sera plus rapide coté service qu'avec le fichier xml car tu n'aura pas à ouvrir un fichier xml et le parser (ce qui est long je le constate car je parse actuellement un petit fichier xml).
    Cela ne devrait pas prendre plus d'une seconde de traitement avec WCF.

    Bref je te conseille de te renseigner sur les deux idées et de voir ce qui est le mieux pour votre cas, quitte à aller devoir convaincre ton CP d'utiliser le WCF.
    (Un ensemble de transparent expliquant la techno, et son interet pour votre porjet, et une comparaison à l'autre méthode vous permettra de le convaincre )

Discussions similaires

  1. [WinService][C#] Comment déployer un service windows ?
    Par sokette dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/04/2005, 16h38
  2. Planifier le démarrage d'un service Window
    Par tscoops dans le forum Windows XP
    Réponses: 2
    Dernier message: 29/03/2005, 14h56
  3. [WD7.5] Service Windows
    Par cqfd dans le forum WinDev
    Réponses: 1
    Dernier message: 29/03/2005, 08h58
  4. [VB6]Arreter un service windows
    Par bouboussjunior dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/10/2004, 17h03
  5. [C#] Icône, barre des tâches et Service Windows
    Par SErhio dans le forum Windows Forms
    Réponses: 17
    Dernier message: 03/09/2004, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo