Где хранить варианты пользовательского интерфейса?

каков широко распространенный способ хранения вариантов интерфейса, таких как настройки "не показывать это сообщение снова" и любые другие варианты интерфейса пользователя? Реестр? Файлы настроек? Я также могу хранить их в базе данных, так как моя программа уже имеет доступ к одному.

изменения Моя текущая программа является локальной, однако в будущем я хотел бы сделать ее веб-основе.

8 ответов


Не-веб-программы:

Я бы не использовал базу данных. Что произойдет, если вы решите переключить базу данных? Теперь вам нужно перенести пользовательские данные. Что произойдет, если они удалятся?

в Windows файлы настроек в папке AppData пользователя подходят. Также допустимо не удалять их при удалении, поэтому настройки будут сохраняться по всему этому. Я бы уклонялся от реестра для пользовательских настроек. Эта область более подходит для системы настройки.

в системах *nix есть аналогичная область,но я не уверен, что с моей головы. Прошло слишком много времени.


веб-программа с локальными настройками:

Cookies-это практически единственный компьютерный вариант для веб-программы. IP-фильтры-плохая идея, так как большинство потребительских интернет-опций будут вращать IP-адреса один раз в день до одного раза в неделю. Вы можете фильтровать MAC, но это будет включать использование необработанных сокетов для получения MAC-адреса. И даже тогда вы, вероятно, получите адрес маршрутизатора, а не компьютера. Это означает, что два человека на одном маршрутизаторе получат одинаковые настройки.


веб-программа с глобальными настройками:

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


Если это веб-среда: зависит от того, как долго вы хотите, чтобы они остались. Если есть регистрации участника в базе данных было бы логично сохранить его в базе данных. Иначе вы можете просто сохранить его как cookie или ip/setting в базе данных.


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


вы можете хранить их там, где это наиболее удобно.

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

в реестре - вам нужно убедиться, что вы используете область CURRENT_USER, чтобы пользователь мог фактически писать в нее. Специфичные для Windows.

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


обычно он обрабатывается Windows через API. Статья MSDN на Как: окно сообщения об исключении программы объясняет, как это сделать .Сеть. Согласно статье, исключение сохраняется в реестре, если вы хотите сохранить решение постоянно таким образом.

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

новый рекомендуемый способ-сохранить его в каталоге данных приложения пользователя. См.управление данными и настройками в Technet.


в Windows "новый" способ-хранить конфигурации в папке пользователя "App-Data" (CSIDL_APPDATA).


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


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