Si cette question vous semble courante, je m'excuse, j'ai fait une recherche rapide autour de ce site et quelques recherches de Google et je n'ai pas trouvé de réponse satisfaisante. P>
Ma question est celle-ci; p>
Je n'ai été qu'un développeur de logiciels depuis 3-4 ans maintenant. Cela peut sembler suffisamment long pour répondre à cette question moi-même, dans tout mon temps, je n'ai jamais eu à développer des logiciels où le principal organe de stockage de données n'est pas nécessaire pour être dans une base de données en ligne. Cette fois toutefois, mon dernier développement nécessite uniquement que ses données ne soient stockées que sur le disque. P>
Les données réelles elles-mêmes sont le poids léger. En-code, l'actif principal sera une classe avec seulement quelques propriétés à la chaîne sur celui-ci, qui doit être persisté. Mes pensées initiales sont sur une simple sérialisation. Sur l'application Fermer les nouveaux actifs sont simplement sérialisés et stockés sur le disque en tant que fichier. Je suis également peut-être peut-être à des fins de sauvegarde (ou s'il s'agit d'une meilleure option à une classe sérialisée), un fichier XML serait approprié. P>
Je ne peux penser à des inconvénients distincts de l'une ou l'autre de ces approches, c'est ce fait qui me fait poser publiquement cette question. D'après mon expérience, il y a rarement une solution à un problème qui ne dispose pas de ses effectifs. P>
4 Réponses :
sérialisation (binaire ou XML) est approprié pour une petite quantité de données. Le problème avec cette approche est lorsque vous obtenez de grandes quantités de données (que vous devrez peut-être interroger). P>
Si vous êtes sur une plate-forme Windows et dans la nécessité d'une base de données appropriée, vous pouvez utiliser le moteur de base de données intégré fourni avec Windows - Esent . C'est le magasin de soutien de Exchange et Ravendb . P>
ici sont les bibliothèques d'emballage .NET pour cela. P>
ManageDesent fournit un accès géré à Esent, le moteur de base de données embarquable originaire de Windows. Managessent utilise l'esent.dll qui fait partie de Microsoft Windows, il n'y a donc pas de binaires supplémentaires non gérés à télécharger et à installer. P> blockQuote>
Une autre option de base de données intégrée est SQL Server Compact Edition . La dernière version de ce est v4 et il semble être très amélioré sur les versions précédentes. p>
Il est fonctionnellement équivalent à l'utilisation d'un fichier XML ou d'une base de données d'accès, ou même d'un fichier texte uni, en ce que vous n'avez pas besoin d'avoir un service SQL Server exécuté ou d'installer quelque chose de spécial sur la machine que votre application fonctionne. sur. p>
Au fil du temps: "À partir de février 2013, SQL Server Compact Edition avait été obsolète; aucune nouvelle versions ou mises à jour n'est planifiée, bien que Microsoft continue de soutenir jusqu'au 2021 juillet". Tellement bientôt ce sera non pris en charge.
La solution la plus légère, est bien sûr d'utiliser XML et la sérialisation. Le principal avantage est qu'il est très facile, nécessitant peu de code et est facilement modifiable à l'aide d'un éditeur de texte. L'autre avantage de cela est de pouvoir disposer de plusieurs fichiers et il sera facile de transférer du PC sur PC. P>
voici une belle Tutoriel sur la sérialisation XML . p>
Toutefois, si votre application va lire, écrire et modifier beaucoup les données, et il n'existe qu'une source de données, il serait préférable d'utiliser une base de données de poids léger. Beaucoup de gens aiment SQLite , tandis que je préfère personnellement Voir ce Question d'utilisation de SQLite avec C # , et Voir ici pour obtenir des informations pour utiliser Firebird avec .NET . P>
J'utilise SQLite dans un projet et cela fonctionne très bien et il est facile à utiliser également, une chose pour garder l'esprit lorsque vous utilisez SQLite, c'est qu'il est conçu pour être utilisé dans un environnement unique, donc si vous Utilisez-le comme base de données pour le backend d'un site Web, par exemple, vous trouverez probablement que cela va lutter sous le moindre charge .. p>
Consultez ce lien pour le wrapper C #: http://sqlite.phxsoftware.com/ p>
J'utilise également Nhibernate et Nhibernate.Linq Pour interagir avec les données, vous pouvez obtenir une construction des deux qui sont compatibles ici: http://www.dennisdoomen.net/2009/07/nhibernate-210-ga-with-linq-and-fluent.html p>
Nhibernate.Linq vous permet d'utiliser cette belle syntaxe de requête LINQ sur votre DB SQLite: P>
var onepiece = de s en session.Linq () où s.name == "une pièce" Sélectionnez S; P>