WinForms — какой самый простой подход для сохранения некоторых данных?

#c# #visual-studio-2015

#c# #winforms #сохранение

Вопрос:

Просто создаю свое первое приложение WinForms.

Вопрос — Какой самый простой / лучший подход для сохранения некоторых данных между использованием приложения (например, список URL-адресов со статусом и датой / временем в данном случае)? Я не вижу никакой необходимости в базе данных.

Например * Проще всего просто сохранить в текстовый файл? * Или сохранение в XML-файл так же просто в DotNet * Как насчет реестра Windows — этого вообще следует избегать? Совместимо ли его использование во всех версиях, включая Windows 7 * База данных — возможно, здесь излишне * Возможно, широко используемая библиотека?

Спасибо

Ответ №1:

Взгляните на настройки вашего проекта (щелкните правой кнопкой мыши проект в обозревателе решений> Свойства> Вкладка Настройки), вы можете определить ряд переменных, которые сохраняются при использовании программы для каждого пользователя, например, имя пользователя, время последнего обновления, прокси-сервер и тому подобное. Сами настройки сериализуются в XML и хранятся в папке настроек приложения для каждого пользователя, но вы также можете указать настройки по умолчанию или для конкретного приложения.

Затем вы можете использовать следующие настройки:

 MyNamespace.Properties.Settings.Default.MySetting
  

Более подробную информацию о файлах настроек можно найти в @ MSDN или в Code Project

Это здорово, если вам нужно всего лишь сохранить несколько переменных между сеансами. Если вам нужно сохранить больший объем данных, рассмотрите либо один из вариантов базы данных, предложенных в других ответах, либо сериализацию.

Ответ №2:

Если вам действительно нужна высокая настойчивость и отсутствие хранилища приложений, вы можете использовать sqlite или sql server compact (оба автономные), однако в вашем случае я думаю, что чтение / запись в XML-файл в общей папке данных приложения будет соответствовать вашим потребностям просто отлично и невероятно просто.

Ответ №3:

Сохранение в XML очень просто в .NET, особенно если вы просто сохраняете URL-адрес и временную метку. Вы можете создать пользовательский класс для хранения данных … во время выполнения манипулируйте экземплярами этого класса в своем приложении.

Когда придет время сохранять, сериализуйте объекты в XML … когда приложению потребуется восстановить данные позже, просто десериализуйте. MSDN имеет простое пошаговое руководство.

Стоит отметить, как это сделал Квинтин, что использование SQL Server Compact или какой-либо другой облегченной базы данных также может быть хорошей идеей. XML — это быстро и просто, но если вам нужно, чтобы люди обменивались данными, или вам нужно что-то более гибкое, чем простая сериализация, вам лучше с базой данных.

Комментарии:

1. КСТАТИ — SQL Server Compact потребует отдельной установки пользователем? Или вы могли бы эффективно, по-видимому, упаковать его развертывание как часть развертывания приложения по щелчку мыши?

Ответ №4:

Отредактировано, потому что мой первый пост был ясен, как грязь

Лично мне нравится хранить данные в базе данных, если пользователи обмениваются данными.

Для не совместно используемых однопользовательских данных все следующие параметры довольно просты.

Если ваши данные хранятся в наборе данных внутри, я бы предложил использовать DataSet .WriteXml и DataSet.ReadXml для локального хранения.

В противном случае обычный текстовый файл был бы проще всего для чего-то такого простого, как вы предложили. Однако, если данные будут более сложными, то наиболее подходящим будет написание Xml-документа.

Вы также можете изучить сериализацию:

http://msdn.microsoft.com/en-us/library/7ay27kt9 (ПРОТИВ 85).aspx

Ответ №5:

Вы должны проверить db4o. Эта легкая объектная база данных с открытым исходным кодом для .Объекты NET и Java очень полезны, когда вам просто нужно простое сохранение. Он более удобен для запросов, чем текстовый файл, и не такой тяжелый, как СУБД. Он включен в качестве библиотеки и сохраняется в файле, поэтому нет вызовов вне процесса.

Его можно добавить в ваш проект, обратившись к библиотеке db4o (скачать здесь). Вы указываете ему путь к файлу, в котором вы хотите сохранить объекты, а он обрабатывает все остальное. Затем вы можете создавать классы для инкапсуляции вашей информации и просто сохранять их экземпляры в файл через db4o. Вы можете запросить их позже через очень простой интерфейс запроса.

Комментарии:

1. Отличное спасибо. Является ли Db4o наиболее широко / популярным выбором, используемым в его категории?

2. Если по категории вы имеете в виду объектные базы данных C # / Java, то да, я так считаю. Однако, если вы имеете в виду хранение небольших примитивных данных из одного сеанса в другой, то наиболее широко используется использование настроек, пользовательского раздела ConfigurationSection или другого XML-файла. Если вы обнаружите, что вам нужно больше возможностей базы данных, но вы не хотите управлять СУБД, стоит изучить базу данных объектов.

3. кажется, db4o требует лицензии, если используется в коммерческих целях? сайт, похоже, предполагает, что вам нужно запросить цитату (цифры не указаны)…

4. db4o требует лицензирования для конкретных коммерческих целей. Однако бесплатную лицензию можно получить и использовать в соответствии с GNU GPL, версия 2. Вам нужно будет рассмотреть вашу цель и посмотреть, разрешено ли ваше использование в соответствии с этим лицензионным соглашением. db4o.com/about/company/legalpolicies/gpl.aspx

Ответ №6:

Зависит от того, сколько данных вы хотите сохранить, но если это всего лишь небольшой набор значений (а не набор объектов или записей), тогда также обратите внимание на изолированное хранилище:

https://msdn.microsoft.com/en-us/library/3ak841sy (v = против 110).aspx