Должен ли я использовать реестр или плоский файл для сохранения состояния программы? - PullRequest
3 голосов
/ 26 марта 2010

У нас есть много продуктов, которые сохраняют свои "состояния" в реестре.

Какова наилучшая практика сохранения состояний программы? Каковы преимущества / недостатки сохранения состояний программы в виде записи реестра или сохранения состояний программы в плоский файл, такой как XML?

Спасибо!

Ответы [ 8 ]

3 голосов
/ 26 марта 2010

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

2 голосов
/ 26 марта 2010

Также учтите, что в реестре есть некоторые ключи, которые являются особенными для каждого пользователя в системе.

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

0 голосов
/ 28 марта 2010

Зависит от того, насколько интенсивно развертывание. Большинство моих приложений являются XCopy-Deployable, то есть они не нуждаются в инсталляторе и могут быть просто скопированы / разархивированы. Поэтому я использую файлы .ini (используя мой собственный анализатор файлов INI , так как .net не имеет встроенного)

Однако, если ваше приложение должно быть централизованно управляемым (например, с помощью групповых политик Windows) или если у вас в любом случае есть «тяжелый» установщик, реестр является лучшим выбором. Это связано с тем, что приложения, которые обычно устанавливаются в C: \ Program Files, а обычные пользователи не имеют доступа для записи в этот каталог. Конечно, есть альтернативы (% APPDATA% или изолированное хранилище, которое необходимо использовать, когда приложение является приложением Silverlight), но вы также можете «идти в потоке».

Конечно, если ваше приложение должно работать на Mono, вы можете в любом случае исключить реестр, и оно должно перейти на "плоские файлы".

0 голосов
/ 28 марта 2010

Я всегда использую обычные файлы, потому что их намного легче разрабатывать =)

Простые операции ввода-вывода, я не помню, как чтение / запись реестра
Простое копирование / вставка файла или экспорт / импорт ключей для резервного копирования / разработки нескольких версий конфигурации для тестирования

Обратите внимание, что все эти преимущества также воплощаются в стратегии развертывания и общее использование клиентом конфигураций

0 голосов
/ 28 марта 2010

Лично я обращаюсь к плоскому файлу, будь то INI-файл или XML-файл, для меня не имеет значения. Однако из-за проблем, связанных с развертыванием, наши клиенты предпочитают реестр. Это зависит от того, кто является вашей клиентской базой, и что предпочитает человек, поддерживающий ваш продукт.

0 голосов
/ 27 марта 2010

Раньше я следовал доктринам Редмонда. Мои программы использовали файлы .INI. Тогда я покорно переключился на реестр - и пользователи начали жаловаться. Итак, я сломал тренд и вернулся к файлам .INI.

Некоторые хотят их редактировать (хорошо / плохо?). Некоторые хотят зарезервировать их или перенести на новую машину. Некоторые не хотят их терять, если переустанавливают Windows.

Как пользователь, у меня есть несколько разделов. Windows / программы / данные / своп (и несколько других). Ни одна из программ не переходит на c:\program files, все они идут в раздел программ. Никакие данные, которыми я могу управлять, не попадают в c:\user data, все они попадают в раздел данных (используйте игрушку power tweakui или regedit для изменения значений по умолчанию (но не все программы ведут себя хорошо и читают реестр по этим путям - некоторые просто трудно) код их)).

Итог - когда Windows получает свои трусики в фанкле, я делаю повторную проверку (примерно каждые три месяца) и форматирую диск C:

Отформатировав раздел Windows, я получаю чистую установку. Мои данные и программы находятся в безопасности, хотя мне может потребоваться переустановить несколько программ, поэтому я использую портативные версии там, где это возможно.

По моему мнению, реестр - это самое большое зло, когда-либо совершенное в Windows - единственная точка отказа.

Мой совет? Локально хранящиеся файлы конфигурации. INI, если пользователю разрешено редактировать, сериализовать или в двоичном формате, если нет.

Или вы могли бы предложить выбор ...

0 голосов
/ 26 марта 2010

Лично я бы пошел на плоский файл.

(я предполагаю, что «реестр» означает реестр Windows?)

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

Если вы не хотите, чтобы данные были "непрозрачными" и, следовательно, "трудными для поиска / манипулирования", реестр дает мало преимуществ. Может быть, это быстрее, но если у вас много состояний для сохранения, лучше использовать встроенную БД вместо простого файла.

0 голосов
/ 26 марта 2010

В течение многих лет программисты хранили свои настройки приложений в конфигурационных файлах. Затем времена изменились, и в течение многих лет они использовали реестр вместо этого - многие из них использовали его плохо, и это вызвало проблемы, когда появилась Vista и ее UAC.

В настоящее время, особенно в мире .Net, разработчики Windows снова возвращаются к хранению вещей в конфигурационных файлах. Лично я считаю, что это лучший способ, если вам нужно перенести приложение на другую машину или переустановить ОС, все, что вам нужно сделать, это сохранить файл конфигурации, чтобы сохранить настройки.

Есть вещи, которые вы все еще можете сохранить в реестре, такие как (зашифрованная) информация о лицензировании. Для всего остального, файлы конфигурации хороши. Обратите внимание на UAC и виртуализацию файлов, чтобы избежать дальнейших проблем.

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