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

Contribuez .NET Discussion :

Gestion complete de Fichier de parametrage


Sujet :

Contribuez .NET

  1. #1
    Robot Forum
    Avatar de forum
    Inscrit en
    novembre 1999
    Messages
    2 088
    Détails du profil
    Informations forums :
    Inscription : novembre 1999
    Messages : 2 088
    Points : 2 480
    Points
    2 480
    Par défaut Gestion complete de Fichier de parametrage
    Bonjour,

    Je vous propose un nouvel élément à utiliser : Gestion complete de Fichier de parametrage

    Gestion de fichier de configuration .

    Les fichier peut être divisée en section et inclure des commentaires.

    Chaque section se voit affecter des propriétés avec des valeurs.

    On peut interroger le fichier paramètre par section

    La classe gère l'écriture/la lecture des info.

    La syntaxe du fichier de paramétrage est simple.

    Il peut être tapé facilement par un utilisateur.

    Le code est tolérant avec les espaces parasites.



    Developpé en C sharp avec visual studio 2017.

    Qu'en pensez-vous ?

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    avril 2007
    Messages
    13 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 13 939
    Points : 24 590
    Points
    24 590
    Par défaut
    ca aurait été mieux avec de l'xml, .net core, et des valeurs typées et typables sur autre chose que string, y compris des classes
    et je trouve que ca fait beaucoup de code pour pas grand chose du coup

    (…)

    et pourquoi pas intégrer la création automatique du fichier si celui ci n'existe pas, forcer l'initialisation requise par le constructeur (voire même par un factory static de singleton par fichier qui simplifie encore plus)
    et utiliser des propriétés plutôt que des public field !

    (…)

    au final j'aurais tendance à dire que c'est ni fait ni à faire
    étrange parce que le précédent code que tu as posté (je ne sais plus de quoi ca parlait) était quand même mieux ...

    (...)

    j'ai été retrouver le code en question, c'était la gestion de saisie par textbox en Windows forms
    et autant que l'utilisation aurait pu être légèrement plus pratique je n'ai pas réussi à mettre en défaut le système donc c'est plutôt réglo
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2018
    Messages : 18
    Points : 369
    Points
    369
    Par défaut
    Salut Pol63,

    Je suis d'accord avec toi globalement mon code de gestion des paramètres est très largement améliorable et je comprends largement tes critiques.
    Lors d'une prochaine version j'intégrerai notamment la création auto des fichiers.


    En revanche pour ce qui est de l'XML c'est vraiment NON.
    On peut faire bien entendu une gestion des paramètres en XML, c'est même beaucoup beaucoup plus simple. Ce n'est pas dit d'ailleurs que j'en fasse une un jour…

    En revanche l'XML dans un fichier de paramétrage ce n'est pas forcement bon. Il y a beaucoup de programmeur qui n'en veulent pas. Notamment parce que lorsqu'ils ont un client au tel (notamment lorsqu'ils sont en voiture ) et qu'il leur font ouvrir un fichier de paramétrage pour le modifier c'est du chinois pour eux.


    Faire de l'XML c'est plus simple pour nous les programmeurs, mais c'est beaucoup plus compliqué pour des personnes qui ne le sont pas.
    C'est peut être parce que je suis un peut old school… mais imagine que ton fichier doivent certaines fois être ouvert par un tech responsable de maintenance ( dans le domaine de la mécanique par exemple), et que ton client soit légèrement réfractaire aux balises ouvrante ou fermante et à l'informatique en general…
    Je pense par expérience que les risques qu'il te plante ton fichier XML sont beaucoup grand. D'ailleurs dans l'industrie j'ai beaucoup vu plus de fichier paramètre structuré comme ca qu'en xml. Donc c'est déjà fait par plein de gens (depuis ma connaissance du cobol il y a longtemps … ), et c'est pas étrange du tout. C'est juste une question de philosophie...

    Donc oui c'est vrais ca fait pas mal de code, mais en partie parce que justement il n'y a pas d'xml et que justement je me suit embêté pour qu'il n'y en ait pas. C'est vraiment volontaire.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    avril 2007
    Messages
    13 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 13 939
    Points : 24 590
    Points
    24 590
    Par défaut
    ok, je comprends mieux, c'est une question de point de vue

    pour moi un fichier de config n'a pas à être ouvert pas quelqu'un qui ne connait pas (voir même n'a pas à être ouvert du tout)
    pour ca je fais une interface graphique (qui va modifier le fichier de config), un fichier de config n'est pour moi que de la persistance locale simple

    comme quoi c'est pas ni fait ni à faire ^^


    après en restant dans ton optique je verrais quand même bien un public static GestParam GetParamFile(string fileName) {} qui s'occupe de créer le fichier si nécessaire et retourne une instance de GestParam qui elle n'a que les méthodes de manipulation du contenu (avec aussi une méthode static pour delete et rendre le constructeur private)
    cette instance pourrait être conservée et éventuellement passée en paramètre ce qui permet de continuer de gérer plusieurs fichiers, mais amène au passage l'abstraction sur le nom de fichier quand on passe l'instance à quelqu'un d'autre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2018
    Messages : 18
    Points : 369
    Points
    369
    Par défaut
    La encore je dirais que tu as à la fois tord et raison.
    Ca dépends comment on voit les choses.

    - Oui : un fichier de config n'a pas à être ouvert par quelqu'un qui ne connais pas… en principe.
    Mais : Tous les programmeurs font des bugs, touts les ordi connaissent des pannes, des mises à jours système dévastatrices etc... Et donc il existe toujours des évènements plus ou moins inattendus. Sinon les contrats de maintenance logiciel ca n'existerait pas… Donc, je part du principe que les ennuis ca existe, et que pouvoir faire paramétrer quelque chose par quelqu'un d'autre que moi rapidement ca peut avoir de l'intérêt .

    -Tu dis : "Pour ca je fais une interface graphique ": La encore je suis tout a fait d'accord avec toi : moi aussi … en principe.
    Parce qu'il faut encore avoir le temps de la faire ( ou meme que le client ait le budget pour que tu la fasse, par ce qu'au bout du compte c'est lui qui paie ). Et dans ce cas d'ailleurs mon programme aurais moins d'intérêt puisque dans ce cas précis il vaut mieux effectivement un fichier de paramétrage de type xml.

    Personnellement, je trouve que tu as une façon tres saine de raisonner, mais trop théorique pour moi. En fait si j'allais imager tu serait un mathématicien et moi un physicien ou un mécanicien . Moi j'aime bien la beauté des math, mais un moment il faut programmer avec en tête la réalité de la vie, de l'argent et donc tu temps . Je pense que ca serait sympa qu'un jour on développe un code libre ensemble à temps perdu , j'ai peut être meme une idée à te proposer...

    Par ce que j'ai une idée de projet qui pourrait rendre vraiment un tres gros service au gens. Mais il me faudrait une personne exactement comme toi. Contacte moi sur mon mail en privé si tu veux que je t'en parle (cf mon code source).

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 151
    Points : 151
    Points
    151
    Par défaut Invoke
    Bonjour,
    Projet intéressant mais pourquoi ne pas avoir utiliser les API Windows directement disponible dans le Kernel32 ?

    Pour la lecture :
    http://pinvoke.net/default.aspx/kern...ProfileSection
    http://pinvoke.net/default.aspx/kern...eProfileString

    Pour l'écriture :
    http://pinvoke.net/default.aspx/kern...ProfileSection
    http://pinvoke.net/default.aspx/kern...eProfileString

  7. #7
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2018
    Messages : 18
    Points : 369
    Points
    369
    Par défaut
    Salut,

    Ecoute je vais être tres honnête :
    D'abord je ne connaissait pas leur existence.
    Ensuite, je pense que ce n'offre pas non plus la liberté nécessaire à mon objectif :
    Faire un prog un peut a part de ce que l'on vois aujourd'hui ( pas de xml ), qui offre une certaine souplesse et une certaine indépendance vis a vis des API.
    Je vais d'ailleurs l'améliorer d'ici la fin de l'année.
    Je pense que ce type de code a une durée de vie tres longue...

  8. #8
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2007
    Messages : 2 954
    Points : 15 484
    Points
    15 484
    Par défaut
    Salut

    Citation Envoyé par Fab2bprog Voir le message
    Je pense par expérience que les risques qu'il te plante ton fichier XML sont beaucoup grand. D'ailleurs dans l'industrie j'ai beaucoup vu plus de fichier paramètre structuré comme ca qu'en xml. Donc c'est déjà fait par plein de gens (depuis ma connaissance du cobol il y a longtemps … ), et c'est pas étrange du tout. C'est juste une question de philosophie...
    Je travaille dans l'industrie automobile depuis plus de 10 ans. En environnement Microsoft ça fait bien longtemps que ces fichiers de configuration "plats" de type .ini ont été abandonnés. Sans aucun jugement de valeur, ceux qui restent ne sont que des reliquats du passé dont on ne peut se débarrasser parce qu'on n'a pas le temps ni les moyens de les remplacer (à l'image des gros systèmes et des applications COBOL).

    Il n'y a pas de nouveau développement avec ce genre de chose, même pour une appli faite entre deux portes on a souvent besoin de fichiers permettant de faire des structures complexes (typiquement XML, qui lui même perd du terrain face au JSON). Et même dans le cas où un fichier plat suffirait, on utiliserait un XML ou un JSON basique, parce qu'on reste sur des technos actuelles standard et industrialisables, pour lesquelles il existe plein de bibliothèques éprouvées et qui permettront de faire évoluer de fichier de configuration si nécessaire.

    Je rejoins Pol63 sur le fait que ça ne permette pas le typage, du coup ça ne permet pas la validation non plus (comme avec un schéma XSD par exemple).

    En résumé je trouve ça beaucoup trop limité par rapport à ce qui existe déjà (et qui est déjà éprouvé, débogué, évolutif, etc. enfin que je peux mettre en prod les yeux fermés).

  9. #9
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2018
    Messages : 18
    Points : 369
    Points
    369
    Par défaut
    Salut,

    Oui je comprends tes remarques,
    Mais bon ce n'est pas ce que j'ai constaté pratiquement non plus dans ma vie…
    Apres ce code est libre, il conviendra a certains et à d'autres pas.
    Et j'ai prévu de l'améliorer grandement.
    Mais j'accepte quand meme tes critiques

  10. #10
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2018
    Messages : 18
    Points : 369
    Points
    369
    Par défaut
    Je voudrais ajouter une chose :
    Certaines personnes veulent du JSON, d'autres de l'XML.
    Certains veulent utiliser des API Kernel32 (donc non portable ).
    Certains se fichent des normes et veulent simplement un truc qui marche
    Certains veulent un fichier modifiable facilement par un tech qui se chargera de l'installation du prog.
    Certains manquent de temps pour faire les choses et ce programme les aidera.
    Certains veulent un code qui part de zéro pour pouvoir le modifier comme ils veulent et ne pas être contraint par une philo existante pour une raison x qui leur appartient.
    Certains veulent un programme sans aucune instruction spécifique à la plateforme pour un max de portabilité.
    Certains doivent s'aligner sur des normes existantes, et ils n'ont pas le choix de faire autrement par ce qu'il y a 20 ans de code derrières.

    En fait un fichier de paramétrage il doit surtout être comme on veux qu'il soit…

    Et j'aurais put avoir un programme qui gère du json ou de l'xml et qui soit bourré de bug aussi… même si l'utilisation d'instruction spécialisées diminue ce risque. D'ailleurs il existe aussi des bug dans des API, Windows n'est pas inconnu non plus pour être un système absent de tout bug.. Ca ne serait pas la première fois qu'un caractère parasite fasse planter une API par exemple, ca arrive souvent d'ailleurs lorsque les fichiers sont édités sur des OS différents ou des version OS différents. Mais je vous rassure mon programme n'est pas a l'abris de cela non plus. Maintenant c'est sure : le code aurait été plus court et plus simple.

    Voyez ce code comme une proposition ORIGINALE , vous pouvez la refuser ( c'est pas grave) , faire des propositions d'amélioration supplémentaire comme Pol63.

    Je vais essayer de tenir compte de tout ca dans une prochaine version , mais ca restera du spécifique.
    Pour l'instant c'est mon premier jet (1.0).

  11. #11
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2010
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : novembre 2010
    Messages : 151
    Points : 151
    Points
    151
    Par défaut
    Personnellement je ne disais pas cela pour te critiquer, j'ai moi-même eu à faire ce genre de gestionnaire de configuration spécifique en partant d'un fichier INI (disposition dont l'explication n'a que peu d'intérêt en soit puisque c'était une volonté cliente). Je ne pouvais pas utiliser les API Windows car je ne connais pas à l'avance le nom des paramètres et des sections. J'ai donc parsé le fichier à la mano, comme ce que tu proposes.

  12. #12
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2018
    Messages : 18
    Points : 369
    Points
    369
    Par défaut Nouvelle version 1.3
    Salut,

    J'ai fait beaucoup d'améliorations depuis ma version 1.0
    - Ajout de 14 méthodes dans la classe permettant de gérer avec la plus grande souplesse possible
    le fichier parametre. Au total vous pouvez maintenant gérer le fichier de parametre avec 22 méthodes différentes.
    - Meilleur présentation du code.
    - Documentation plus précise.
    - Corrections de bug et optimisations diverses.

    Je projette de l'améliorer encore tres grandement.
    Je pense notamment que dans les versions futures je vais inclure des notions de JSON et d'XML (j'ai quelques idées sous le coude...) .

  13. #13
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2018
    Messages : 18
    Points : 369
    Points
    369
    Par défaut Version 1.4
    Citation Envoyé par ypelissier Voir le message
    Personnellement je ne disais pas cela pour te critiquer, j'ai moi-même eu à faire ce genre de gestionnaire de configuration spécifique en partant d'un fichier INI (disposition dont l'explication n'a que peu d'intérêt en soit puisque c'était une volonté cliente). Je ne pouvais pas utiliser les API Windows car je ne connais pas à l'avance le nom des paramètres et des sections. J'ai donc parsé le fichier à la mano, comme ce que tu proposes.
    Et comme je le disait , on a pas toujours le choix, y compris financièrement de dire non à un client…
    Il est certain que lorsque l'on sort des normes bien standardisés comme l'XML, et que l'on développe du code de A à Z, on risque toujours des bugs. L'investissement , le temps, les couts augmentent...
    C'est aussi pourquoi j'ai essayé de faire une gestion complète de fichier parametre facilement modifiable et adaptable ( peut être aussi à ce que tu as fait et à d'autre projets que tu aura dans le futur ?)
    Avant d'ajouter de nouvelles fonctions, de vais dans ma prochaine version 1.5 rajouter encore des tests de cohérence ( structure et data ) et pousser encore plus loin la recherche de bug et l'optimisation du code. Le but c'est que la version 1.5 soit vraiment la plus solide possible.
    Je ne connait pour l'instant pas de bug dans cette version 1.4.
    Apres la version 1.5 j'ajouterais certaines fonctions qui améliorerons les possibilités offertes par le programme.

Discussions similaires

  1. [vb.net] gestion d un fichier de configuration
    Par rangdalf dans le forum Windows Forms
    Réponses: 6
    Dernier message: 20/02/2006, 14h24
  2. Réponses: 3
    Dernier message: 18/10/2005, 17h23
  3. fichier de parametrage ?
    Par evlp2004@hotmail.com dans le forum Access
    Réponses: 3
    Dernier message: 09/09/2005, 20h37
  4. Réponses: 7
    Dernier message: 05/08/2005, 16h32
  5. Réponses: 8
    Dernier message: 06/07/2004, 14h17

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