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

Что широко принятый путь состоит в том, чтобы сохранить интерфейсный выбор, такой как настройки 'Do not show this message again' и какой-либо другой определенный для интерфейса выбор пользователя? Реестр? Файлы настроек? Я могу также сохранить их в базе данных, так как моя программа уже имеет доступ к одному.

РЕДАКТИРОВАНИЯ Моя текущая программа локальна, однако в будущем, я хотел бы сделать это веб-.

9
задан sbenderli 23 July 2010 в 14:03
поделиться

8 ответов

Программа, не основанная на веб:

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

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

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


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

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


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

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

7
ответ дан 4 December 2019 в 12:16
поделиться

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

2
ответ дан 4 December 2019 в 12:16
поделиться

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

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

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

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

2
ответ дан 4 December 2019 в 12:16
поделиться

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

1
ответ дан 4 December 2019 в 12:16
поделиться

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

1
ответ дан 4 December 2019 в 12:16
поделиться

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

.
1
ответ дан 4 December 2019 в 12:16
поделиться

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

2
ответ дан 4 December 2019 в 12:16
поделиться

Обычно эта функция обрабатывается Windows через API. Статья MSDN о Как: Program Exception Message Box объясняет, как это сделать с помощью .NET. Согласно статье, исключение сохраняется в реестре, если вы хотите постоянно хранить решение таким образом.

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

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

1
ответ дан 4 December 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: