2010-07-14 2 views
0

Mon application a une configuration basée sur xml. Il a aussi un fichier xsd. Avant le démarrage de mon application, xmllint vérifie la configuration par rapport au fichier xsd.Approche pour mettre à niveau la configuration de l'application

Avec la croissance de mon application, la structure de configuration a changé un peu. Maintenant, je dois faire face à ce problème: Lorsque je fournis une nouvelle version de mon application au client, je dois mettre à niveau la configuration existante.

Comment rendre cela facile et intelligent?

Mon idée est de construire un objet de configuration en utilisant python, puis de lire la configuration v1 à partir du fichier et de l'enregistrer en tant que v2. Mais si plus tard la structure est à nouveau modifiée, je dois construire un autre modèle d'objet de configuration.

Répondre

1

Pour tous les paramètres de configuration qui restent les mêmes entre les configurations, demandez à votre script d'installation de copier ceux qui proviennent de l'ancien fichier de configuration s'il existe. Pour le reste, il suffit d'avoir quelques valeurs par défaut que l'utilisateur peut changer si nécessaire, comme d'habitude pour un fichier de configuration. À moins d'avoir mal compris la question, on dirait que vous faites une affaire plus importante que nécessaire. A propos, vous n'avez vraiment besoin que d'un seul script "updater", car vous pouvez paramétrer le tag XML de sorte qu'il passe par votre nouveau fichier de configuration config file, puis vérifie simplement les tags dans l'ancien fichier contre cela et copier les données de ceux qui sont présents dans le nouveau fichier. Je n'ai pas travaillé avec des fichiers XSD auparavant, donc je ne connais pas les détails de travailler avec eux, mais je ne pense pas que cela devrait être si difficile.

+0

Par exemple: l'ancienne configuration ressemble Mais dans la nouvelle configuration, il semble: La valeur à l'intérieur de foo peut être pertinente pour le client. En mettant à jour, je dois renommer la section foo en barre. – stanleyxu2005

+0

@stanley: Si vos modifications sont si importantes, vous devrez probablement faire des scripts de mise à niveau séparés pour chaque changement de version. Cependant, si les mises à niveau ne se produisent pas si souvent, ce n'est peut-être pas si grave. Cependant, vous voudrez certainement vous assurer que vous pouvez enchaîner les modifications de fichiers, car il est toujours possible qu'un utilisateur utilise une version du programme antérieure à la dernière version, de sorte que les modifications requises sont maintenant encore plus importantes. – JAB

+0

Vraiment, cependant, si vous voulez garder le processus de mise à niveau aussi simple que possible, gardez la disposition du fichier de configuration aussi proche de l'original que vous le pouvez. Si, pour une raison quelconque, cela n'est pas possible (en raison d'un changement complet dans la façon dont votre programme fonctionne et stocke sa configuration), vous pourriez réduire l'effort requis de votre part en demandant au client de mise à niveau, mais je ne recommanderais pas vraiment cela, tout compte fait. – JAB

Questions connexes