Je développe une application de bureau, et cette application nécessite des informations pour fonctionner, mais elle ne change aucune de ces informations (les données doivent être chargées à chaque exécution de l'application, mais les données ne sont jamais modifiées). Les données doivent être stockées sur le même ordinateur que l'application est en cours d'exécution (stockage côté client?).
Il est également préférable que l'utilisateur ne puisse pas facilement modifier ces informations (en supposant qu'il n'a pas beaucoup de connaissances informatiques).
Comment dois-je stocker ce type d'informations? Une base de données locale? XML envoyé avec l'application?
J'utilise WPF.
Réponses:
Un fichier binaire serait la réponse évidente, mais cela dépend de la façon dont vous le chargez - vous pourriez aussi bien vous faciliter la vie si vous le pouvez.
XML pourrait être un bon choix car il existe des méthodes intégrées en C # pour lire ceci. Vous pouvez ajouter une somme de contrôle à vos données, de sorte que si l'utilisateur la modifie, la somme de contrôle ne correspondra plus (vous devez ajouter une vérification pour vous assurer que la somme de contrôle est valide)
Une base de données locale peut créer plus de problèmes car vous avez d'autres dépendances dont vous avez besoin pour pouvoir y accéder
la source
Si les données ne changent jamais et sont en lecture seule , placez-les simplement dans un fichier de code sous forme de liste de constantes.
Si ces données sont différentes par déploiement, un fichier externe est correct.
.Net est fourni avec des fichiers .config intégrés (App.Config). Il faut les utiliser car il existe des méthodes standard (intégrées au cadre) pour en lire les informations.
Utilisez les fichiers de configuration au cas où un paramètre devrait changer (ne dites jamais jamais) car ce ne sont que des fichiers texte (Xml). S'il y a des informations sensibles, on peut crypter un paramètre si nécessaire.
la source
Vous pouvez toujours ajouter un fichier dans votre projet et définir son type de génération sur
Embedded Resource
afin qu'il soit intégré directement dans l'application elle-même.Alternativement, un fichier chiffré et placé dans un emplacement accessible.
la source
Si vous ne voulez pas que l'utilisateur regarde les données, vous devez les sérialiser dans un fichier de données binaires.
Seule l'application connaîtrait la longueur des morceaux à lire.
Je ne connais pas C # mais en Java vous créeriez le fichier comme ceci:
... et ils le lisent comme ceci:
la source