Где хранить варианты интерфейса пользователя? - PullRequest
8 голосов
/ 23 июля 2010

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

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

Ответы [ 8 ]

7 голосов
/ 23 июля 2010

Программа без веб-интерфейса:

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

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

В * nix системах есть похожая область, но я не уверен, что у меня в голове.Это было слишком долго.


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

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


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

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

2 голосов
/ 23 июля 2010

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

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

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

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

2 голосов
/ 23 июля 2010

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

2 голосов
/ 23 июля 2010

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

1 голос
/ 23 июля 2010

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

1 голос
/ 23 июля 2010

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

1 голос
/ 23 июля 2010

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

1 голос
/ 23 июля 2010

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

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

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

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