App.Config против пользовательского XML-файла
-
21-09-2019 - |
Вопрос
Я читал много высказываний типа «вам не следует засорять файл app.config пользовательскими настройками".Однако у меня сложилось впечатление, что именно в этом и заключалась цель файла?
Действительно ли это просто предпочтение?Или есть ли какие-либо реальные преимущества (кроме разделения настроек) от использования специального XML-файла по сравнению с файлом app.config?Если вам нужно явно разделить настройки, лучше использовать собственный ConfigurationSection
вместо того, чтобы выбрать собственный XML-файл?
Я хотел бы поделиться мыслями других людей по этому поводу.
Решение
По моему скромному мнению, некоторые люди склонны переборщить с обработчиками пользовательских разделов конфигурации.
Я склонен использовать их только тогда, когда мне нужно что-то очень структурированное;и который используется/написывается третьими лицами (т.е.Я хочу провести некоторую экстравагантную проверку).
Я думаю, вы вполне можете использовать app.config/web.config для всех соответствующих настроек и использовать отдельные XML-файлы, когда совершенно очевидно, что это отдельный компонент приложения.
Другие советы
Взгляните на Архитектура настроек приложения, app.config предназначен для конфигурации приложения, хотя это довольно общий термин.Поэтому я бы посоветовал вам заглянуть в файлы настроек приложения.
Я бы не стал хранить такие настройки, как «загружать базу данных при запуске или нет» в app.config.Я бы предпочел использовать для этого альтернативное хранилище, такое как настройки приложения, не путайте конфигурацию приложения с настройками, даже если вы, возможно, захотите это сделать, не делайте этого.Предполагается, что app.config имеет конфигурацию, касающуюся вещей более низкого уровня, таких как соединение с базой данных, поставщик членства или любую другую информацию, критическую для приложения.
Большинство настроек, как правило, попадают в один из трех лагерей:
- Технические настройки, влияющие на внутреннее поведение кода, например.строка подключения к базе данных, путь к файлу данных, переключатели журналирования, переключатели обработки ошибок и т. д.
- Бизнес-настройки, влияющие на бизнес-логику продукта, например.«разрешен ли пользователям доступ к модулю CRM?»
- Значения профиля, специфичные для пользователя, например.«разрешен ли этому пользователю доступ к модулю CRM?».
Естественным местом для типа 1 является app.config
или web.config
, а естественное место для типов 2 и 3 — в базе данных.
App.Config хорош для конфигурации, специфичной для приложения:путь к базе данных является хорошим примером.Остальное должно быть вне этого.
Возможно, вы захотите создать файлы для конкретного пользователя, а затем использовать собственный XML-файл, который будет сохранен в изолированном хранилище.
По моему мнению, я считаю, что app.config хорош для настроек времени развертывания, таких как расположение базы данных, IP-адрес или расположение файла важных данных и т. д.Пользовательские настройки, такие как шрифт, цвет и настройки поведения, должны храниться в другом файле, который вы можете легко создать и сохранить с помощью сериализации XML.