2011-09-19 4 views
4

Il s'agit probablement d'une question très élémentaire, mais je suis en train de créer une application basée sur Windows Forms, qui impliquera une grande quantité de stockage de données. Ce sera essentiellement un simulateur de sport où il y aura des centaines d'équipes, avec des milliers de joueurs.Stockage des données dans les applications WinForms

J'ai donc besoin de trouver la meilleure façon de stocker ces données. Windows Forms est relativement nouveau pour moi comme je l'ai été surtout travaillé avec ASP.NET, mais je suis venu avec les idées suivantes:

  1. base de données SQL Compact dans le répertoire du programme
  2. fichiers contenant le sérialisable objets.

Existe-t-il d'autres solutions qui pourraient être meilleures? Ou lequel de ces devrais-je choisir?

Répondre

1

Vos exigences sont extrêmement vagues, mais en général, évitez la sérialisation pour tout type de magasin de données persistant. Si vos données sont relationnelles (elles ont une structure interne, comme "les équipes doivent contenir des joueurs" ou "un joueur peut être membre d'une seule équipe"), je suggère un SGBD relationnel tel que SQL Server Compact Edition ou SQLite.

Si vos données ne sont pas relationnelles, je suggère un magasin de clés/valeur comme RavenDB.

De même, ne placez pas de données dans le répertoire du programme; il peut ne pas être écrit par l'utilisateur. Stocker des données dans le répertoire de l'utilisateur.

+0

Merci pour votre aide. Il sera en effet relationnel, et après quelques recherches j'irai avec SQL Server Compact, qui a le bonus supplémentaire d'utiliser LINQ-to-SQL avec ça – Chris

1

Si vous avez besoin d'exécuter des requêtes sur les données, je resterais loin de la sérialiser dans un format propriétaire.

S'il n'y a qu'un seul utilisateur, alors vous pouvez faire quelque chose de simple comme un MDB Access via les pilotes JET, SQLLite ou NoSQL.

S'il y a plusieurs utilisateurs simultanés, vous aurez certainement besoin de regarder un SQL basé sur un 'serveur' - par ex. SQL Express (mais notez les limitations de taille de base de données), MySQL, etc.

+0

Rien ne vous empêche de sérialiser les données et d'utiliser LINQ par rapport à lui lorsque vous le désérialisez ... – Cipi

+1

Oui, mais qu'en est-il des autres utilisateurs des données, par ex. l'exécution de rapports avec SSRS, Crystal, etc. Et si des performances sont nécessaires lors de l'interrogation des données, des index seront nécessaires. – StuartLC

0

Pourrait utiliser une base de données .MDB Access pour stocker les données. Pas aussi fiable dans mon expérience que SQLite.

De plus, vous ne mentionnez pas si vous devez conserver ces données après la fermeture du formulaire? Si vous ne le faites pas, vous pouvez simplement utiliser les DataSet (ou DataTables) en mémoire pour que les données restent rapidement accessibles.

Questions connexes