Я хочу сохранить конфигурацию моего проекта, которая включает в себя
- Размер экрана
- Положение экрана
- Пути к папкам
- Настройки пользователя и тд.
Стандартные места, где вы можете сохранить эти значения конфигурации:
- реестр
- INI файлы
- Личные файлы (например, * .cfg)
Как вы выбираете между этими местами? Кроме того, есть ли плюсы и минусы использования любого из них?
Ответы:
Реестр:
+
Относительно стандарт в среде Windows.+
Как правило, хорошая поддержка от установщиков и т. Д.-
API для конкретной платформы, если вы хотите портировать свое приложение.-
Не особо удобочитаемый.INI файлы:
+
Простой формат+
Портативный.+
Человек читаемый.-
Может быть трудно хранить более сложную информацию (например, что-либо, вложенное глубиной более двух уровней).?
Возможно, придется написать свой собственный синтаксический анализатор (хотя и не сложно) или использовать внешнюю библиотеку, такую как SimpleIni (спасибо Джонатану Мерлету за комментарий).XML-файлы (я предполагаю, что это опция .cfg):
+
Стандартный формат.+
Портативный.+
Поддерживает глубоко вложенные структуры.-
Не особо удобочитаемый.Лично для приложений Windows я склонен использовать C # и использовать личный файл для пользователя, хранящийся в формате XML. Я делаю это, как правило, потому что удобочитаемость не является приоритетом в типах приложений, которые я пишу (и в любом случае приложение должно иметь редактор конфигурации), а в среде .NET очень легко работать с XML. Я очень часто получаю объект UserConfiguration, который просто сериализуется в файл конфигурации и из файла конфигурации - практически не требуется разработка (анализ, преобразование содержимого), и ваша конфигурация готова для использования в строго типизированной среде.
источник
Я бы пошел с INI-файлами, они более удобны для человека:
XML может быть хорошим вариантом, но он не может сравниться с простотой и элегантностью INI:
INI также очень хорошо поняты и независимы от платформы. Вероятно, для них не так много инструментов, как для файлов XML, потому что, ну кому нужен специализированный инструмент для чтения и редактирования файла INI?
источник
<window width="600" height="350" />
Я предпочитаю файлы XML. Они являются иерархическими, вы можете согнуть их по своему желанию практически любым способом, который они себе представляют, они хорошо поняты, независимы от платформы, и существует широкий спектр программного обеспечения для их чтения и записи.
источник
Чтобы расширить предложение Джеффа о YAML , вот краткое введение.
YAML похож на JSON (на самом деле, JSON является подмножеством YAML начиная с версии 1.2 стандарта YAML и, следовательно, может корректно обрабатывать JSON анализаторами YAML). На первый взгляд, главное отличие состоит в том, что YAML (по умолчанию) использует отступы, а не скобки для отображения иерархии. Существует также заметное отсутствие кавычек для строк. Быстрый пример сверху:
См . Страницу YAML Википедии для лучших примеров. Поддержка YAML существует для большинства основных языков ( подробности см. На yaml.org ).
источник
Вы забыли опцию: База данных. В основном это используется в тех случаях, когда пользователи заходят в ваше приложение, когда ваше приложение не может полагаться на пользователя, вошедшего в Windows. Это, например, когда ваше приложение работает в режиме киоска Windows.
источник
Мои личные предпочтения - файлы XML:
В большинстве случаев я не ожидаю, что пользователю придется редактировать свои параметры конфигурации, поэтому проблема читабельности не является аргументом в этом случае.
Если им нужно отредактировать их, вы можете предоставить инструмент для редактирования - это не позволит пользователю сделать что-то ненормальное с данными. Если они хотят восстановить настройки по умолчанию, вы можете просто попросить их удалить файл x, что большинству пользователей будет удобно.
Обратите внимание, что вам все равно нужно быть осторожным, чтобы иметь разрешение на сохранение файла, поскольку в некоторых местах по умолчанию в Windows 7 нет доступа для записи и т. Д.
INI-файлы - это хороший стандартный способ хранения конфигурации, они проверены и опробованы, но они просто кажутся мне «Windows 3.1»!
Вероятно, лучший вариант, если вы хотите, чтобы пользователь мог возиться со своими данными
Я бы лично держался подальше от реестра. Во-первых, вы не можете гарантировать, что у пользователя есть необходимые разрешения на чтение / запись, куда вы хотите хранить свои данные.
В более поздних ОС, где виртуализация реестра вступает в игру, это может вызвать серьезную путаницу, потому что вы не можете «видеть» виртуализированные настройки - это укусило нас не раз, когда мы часами пытались выяснить, почему что-то не работает.
источник