Хранение данных в приложениях WinForms - PullRequest
4 голосов
/ 19 сентября 2011

Это, вероятно, очень простой вопрос, но я нахожусь в процессе создания приложения на основе Windows Forms, которое потребует огромного объема хранения данных. По сути, это будет спортивный симулятор, в котором будут сотни команд с тысячами игроков.

Так что мне нужно выяснить, как лучше хранить эти данные. Windows Forms является относительно новым для меня, так как я в основном работал с ASP.NET, но у меня возникли следующие идеи:

  1. База данных Compact SQL в программном каталоге
  2. Файлы, содержащие сериализуемые объекты.

Существуют ли другие решения, которые могут быть лучше? Или какой из них мне выбрать?

Ответы [ 3 ]

2 голосов
/ 19 сентября 2011

Ваши требования крайне расплывчаты, но в целом держитесь подальше от сериализации для любого вида постоянного хранилища данных.

Если ваши данные являются реляционными (они имеют внутреннюю структуру, например «команды должны содержать игроков» или «игрок может быть членом только одной команды»), тогда я предлагаю реляционные СУБД, такие как SQL Server Compact Edition или SQLite .

Если ваши данные не являются реляционными, я предлагаю хранилище ключей / значений, например RavenDB .

Кроме того, не помещайте данные в каталог программы; он может быть недоступен для записи пользователем. Храните данные в каталоге пользователя.

1 голос
/ 19 сентября 2011

Если вам нужно выполнить запросы к данным, я бы не стал сериализовывать их в проприетарном формате.

Если есть только один пользователь, вы можете сделать что-то простое, например, Access MDBчерез драйверы JET, SQLLite или NoSQL.

Если будет несколько одновременных пользователей, вам почти наверняка потребуется взглянуть на «серверный» SQL - например, SQL Express (хотя обратите внимание на размер БДограничения), MySQL и т. д.

0 голосов
/ 19 сентября 2011

Может использовать базу данных .MDB Access для хранения данных.Не так надежен в моем опыте, как SQLite.

Кроме того, вы не упоминаете, нужно ли сохранять эти данные после закрытия формы?Если вы этого не сделаете, вы можете просто использовать в памяти DataSet (или DataTables), чтобы обеспечить быстрый доступ к данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...