Ответ 1
App.config для настольных приложений и Web.config для веб-приложений являются частью системы конфигурации .NET. В первую очередь они используются для управления настройками платформы .NET в отношении нашего приложения. Это такие параметры конфигурации, как замены версий сборок (раздел <assemblyBinding> ), замена версии .NET framework (<startup> ) и т.д. (См. msdn для полной схемы app.config.) Один раздел предназначен для пользовательских настроек разработчиков приложений (<appSettings> ). Существует также возможность создавать пользовательские разделы. Таким образом, когда нам нужно сохранять настройки, мы можем либо копировать файлы app.config, либо создавать собственные отдельные файлы конфигурации.
Вот плюсы и минусы использования app.config:
-
Pro: В .NET уже есть стандартный API для чтения настроек из раздела appSettings. Если вам нужно всего лишь несколько настроек конфигурации, гораздо проще использовать этот готовый API, чем разрабатывать и тестировать свой собственный класс для чтения ваших файлов конфигурации. Кроме того, файл app.config уже включен в проект VS для вас.
-
Pro: Существует стандартная иерархия machine.config/app.config. Если вы планируете такие настройки, которые могут быть установлены в машинном масштабе и переопределены или оставлены как есть для отдельных приложений, вы должны использовать app.config.
-
Pro/Con: App.config кэшируется во время выполнения. Если вы планируете обновлять его во время работы вашего приложения, вам нужно специально запросить обновление определенного раздела файла конфигурации. Для web.config веб-приложение автоматически перезапускается, когда что-то изменяется в файле. Это довольно удобно.
-
Con: app.config хранится в том же каталоге, что и ваш .exe файл. Обычно он будет находиться в подпапках C:\Program Files. Этот каталог дополнительно защищен в Windows 7 от записи. Вам нужно быть членом группы "Администраторы", чтобы писать там, и если ваш уровень контроля над UAC (User Access Control) на панели управления не установлен в 0 (что обычно не является), OS будет запрашивать подтверждение записи в c:\Программные файлы. Таким образом, пользователи без прав администратора не смогут изменять конфигурацию в app.config. То же самое касается изменения ваших настроек программным образом: ваше приложение получит исключение при попытке написать app.config, если оно работает не под пользователем администратора в Windows 7. Ваши собственные файлы конфигурации обычно переходят в папку C:\ProgramData\или c:\Users (в Windows 7). Эти местоположения более удобны для написания пользователями или программами.
-
Con: Если пользователь отредактировал файл app.config и случайно повредил его, все приложение не начнет с какого-то неясного сообщения об ошибке. Если ваш отдельный файл конфигурации поврежден, вы сможете предоставить более подробное сообщение об ошибке.
В заключение: app.config дает вам более легкий (более быстрый вариант) подход, в основном подходящий для параметров только для чтения. Пользовательский файл настроек дает вам больше свободы (где хранить файл, проверку/обработку ошибок, большую гибкость с его схемой), но требует дополнительной работы во время разработки.