2009-07-28 8 views
2

Je prendrai (espérons-le) un grand projet pour migrer une application Visual FoxPro d'entreprise vers C# 3.0 sur .NET 3.5. Je sais que cette application a un grand nombre de paramètres qui ont un impact sur tout, des configurations multi-utilisateur/multi-sites pour signaler les propriétés. Au moins 150 paramètres différents sont actuellement définis dans le monde entier.Gérer un grand nombre de paramètres dans une application C# WinForms?

Les paramètres sont actuellement stockés en tant que bits dans la base de données de l'application, ce qui les empêche d'être modifiés au niveau de l'utilisateur, car toutes les instances partagent la même base de données.

Ma question est, connaissez-vous un moyen de gérer le stockage de ces paramètres qui permettrait de les changer par utilisateur, sans sacrifier la performance/Il devrait également être stocké d'une manière qui permet aux valeurs de être modifié pendant que l'application est en cours d'exécution. Toute idée serait appréciée.

Répondre

4

Le fichier Settings.Settings standard, je crois, vous offre cette fonctionnalité, y compris les variables d'application ou d'utilisateur. Bien que je ne suis pas sûr à 100% si les changements sont ramassés sans redémarrer l'application.

Voir ici pour plus d'informations: MSDN:Using Settings in C#

+0

C'est un bon système pour un nombre raisonnable de paramètres et de Cource utilisateurs paramètres de portée permettrait de résoudre certaines de mes préoccupations. Mais, le nombre de paramètres que je vais traiter ici sont monstres, et je ne veux pas le bourrer dans le app.config ou Settings.settings. Une solution idéale impliquerait quelque chose dans le sens de la sérialisation des objets comme un moyen de stocker les paramètres dans un petit espace, mais permet toujours la modification à travers une application séparée). Des pensées dans ce domaine? –

+0

Quelle est l'objection à les stocker dans un fichier de paramètres? Même avec une grande quantité de paramètres, cette approche devrait fonctionner.Le fichier de paramètres est stocké en XML, donc je vous assure qu'il ne sera pas une taille de fichier efficace, mais je ne m'attendrais pas à un impact important sur le temps de chargement de l'application. Le fichier de paramètres peut également être facilement mis à jour à l'exécution, vous aurez juste besoin d'ajouter une interface graphique appropriée autour d'elle. Vous pouvez aussi manipuler directement le fichier, mais je vous recommande d'utiliser personnellement l'API standard. – MattH

+0

Je pense que je vais utiliser le système de base de paramètres pour l'instant, avec l'intention de créer une version sérialisée qui peut résider dans un stockage isolé pour chaque utilisateur de l'application. Merci pour votre aide! –

0

Ajouter un champ utilisateur à la table dans la base de données de l'application qui stocke les paramètres, puis ajoutez l'utilisateur actuel en tant que paramètre à tous lecture/écriture des appels à cette table .

1

Si vous voulez passer à "entreprise", vous pouvez essayer d'avoir une table de définitions de paramètres, associée à une table de paramètres utilisateur.

Les définitions de paramètres ont la PK définie par une colonne de domaine (pour les paramètres de l'interface utilisateur, les paramètres de connexion, les paramètres de langue, etc.) et un identificateur de paramètre. Une troisième colonne définirait la valeur par défaut/globale.

Les paramètres utilisateur ont le paramètre PK défini sur les définitions de paramètres PK + ID utilisateur et une colonne de valeur de paramètre, varchar (x).

Si l'application prend en charge la langue, les colonnes d'ID de langue doivent être ajoutées aux deux tables.

L'enregistrement des modifications de l'utilisateur dans le tableau des paramètres utilisateur doit être simple. Être averti lorsque les paramètres globaux changent est un peu plus compliqué.

EDIT: une chose à garder à l'esprit est de toujours revenir à une valeur par défaut: paramètre global/langue par défaut.

0

Vous devrez peut-être travailler de manière logique pour rechercher les éléments spécifiques aux données/à l'application par rapport à ceux spécifiques à l'utilisateur. Dans VFP (foxpro), les tables et leurs clés primaires respectives sont évidemment les mêmes, quel que soit l'utilisateur. D'autres choses, telles que les valeurs par défaut peuvent être personnalisables par utilisateur, les comptes, l'accès, les capacités à ajouter/modifier/supprimer, etc.

HTH

Questions connexes