С#.NET - метод для хранения информации о очень малых масштабах?

У меня есть приложение, которое потребует крайне мало постоянного хранения. Реально мы говорим о < 30 целых чисел. Все приложения должны знать эти целые числа при следующем запуске (и целые числа меняются по мере их запуска).

Для этого база данных слишком много, но я не хочу просто использовать текстовый файл.

Есть ли у С# какой-либо механизм для сохранения небольших значений, подобных этому между запусками? Я заметил, что вы можете хранить вещи в файлах ресурсов и в некоторых других местах - я не знаю, можете ли вы изменить их во время выполнения. Я просто изучаю С# и .NET для новой работы, поэтому извиняюсь, если это глупый вопрос!

Ответы

Ответ 1

Вот blurp другого сообщения SO, в котором объясняется, как настраивать параметры приложения, это простое решение для чтения/записи значений на основе файлов.

"Если вы работаете с Visual Studio, довольно легко получить устойчивые настройки. Щелкните правой кнопкой мыши по проекту в обозревателе решений, выберите" Свойства ". Выберите вкладку" Настройки ", нажмите гиперссылку, если настройки не существуют. Используйте вкладку" Параметры "для создания настроек приложения. Visual Studio создает файлы Settings.settings и Settings.Designer.settings, которые содержат параметры Singleton, унаследованные от ApplicationSettingsBase. Вы можете получить доступ к этому классу из своего кода для чтения/записи настройки приложения:"

Settings.Default["SomeProperty"] = "Some Value";
Settings.Default.Save(); // Saves settings in application configuration file

Ответ 2

Я бы использовал внедренную базу данных sqlite.

http://www.codeproject.com/Articles/22165/Using-SQLite-in-your-C-Application

SQLite - небольшая, быстрая и встраиваемая база данных, в которой механизм базы данных и интерфейс объединены в одну библиотеку. Он также имеет возможность хранить все данные в одном файле. Поэтому, если вашему приложению требуется отдельная база данных, SQLite, возможно, является идеальным выбором для вас. Разумеется, есть и другие причины выбора SQLite, включая:

SQLite имеет небольшой объем памяти, и для доступа к базам данных требуется только одна библиотека, что делает ее идеальной для встроенных приложений баз данных. SQLite был перенесен на многие платформы и работает даже в Windows CE и Palm OS. SQLite соответствует требованиям ACID, отвечающим всем четырем критериям: Atomicity, Consistency, Isolation и Durability. SQLite реализует большое подмножество стандарта SQL ANSI-92, включая представления, подзапросы и триггеры. Нет проблем с дополнительными драйверами баз данных, требуется настройка ODBC. Просто включите библиотеку и файл данных в приложение. SQLite имеет API для родного языка для C/С++, PHP, Perl, Python, Tcl и т.д. Собственный API для С# по-прежнему отсутствует.

Ответ 3

Вы можете просто сериализовать список в XML файл. Вот как вы его сохраняете:

var xs = new System.Xml.Serialization.XmlSerializer(typeof(List<int>));
List<int> ints = new List<int> { 1, 2, 3 };

using (FileStream fs = new FileStream(@"C:\store.xml", FileMode.OpenOrCreate))
{
    xs.Serialize(fs, ints); 
}

И получить его так же легко:

using (FileStream fs = new FileStream(@"C:\store.xml", FileMode.OpenOrCreate))
{
    ints = xs.Deserialize(fs) as List<int>;
}

Ответ 4

Я бы выбрал хранилище файлов и не использовал базу данных или реестр, как первый, который требуется для большей части фреймворка, а второй... о, хорошо, никогда не играй с реестром:)

используя XML в качестве хранилища файлов, это отличное чтение:

Как обрабатывать XML файлы?

вы можете создать свой файл, чтобы сохранить все ID в одном и том же node, или написать один идентификатор на node, это зависит от вас, что-то вроде этого будет хорошо:

<?xml version="1.0" encoding="utf-8" ?> 
<settings>
    <selected>
        <id>1</id>
        <id>8</id>
        <id>12</id>
        <id>15</id>
    </selected>
</settings>

Чтобы создать такой файл:

  XmlDocument doc = new XmlDocument();
  XmlElement set = (XmlElement)doc.AppendChild(doc.CreateElement("settings"));
  XmlElement sel = (XmlElement)set.AppendChild(doc.CreateElement("selected"));

  int[] selectedIds = new int[] { 1, 2, 3, 4, 5 };

  foreach (int id in selectedIds)
     sel.AppendChild(doc.CreateElement("id")).InnerText = id.ToString();

  string path = Path.GetDirectoryName(Application.ExecutablePath);
  doc.Save(path + "/settings.xml");

Для чтения вы можете использовать XmlReader, XmlTextReader, XDocument и т.д.

Ответ 5

Если вы используете С# 4.0 и выше, вам может понадобиться посмотреть новый Файлы с памятью.

Использование Persisted Memory Mapped files даст вам легкость файла, но скорость отображения в памяти. Конечно, вы все равно должны сами управлять форматом файла.

  • Сохраненные файлы с отображением памяти

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

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