При разработке .NET Windows Forms Application у нас есть выбор между этими App.config
тегами для хранения наших значений конфигурации. Какой лучше?
<configuration>
<!-- Choice 1 -->
<appSettings>
<add key="RequestTimeoutInMilliseconds" value="10000"/>
</appSettings>
<!-- Choice 2 -->
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5612342342" >
<section name="Project1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5612342342" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<Project1.Properties.Settings>
<setting name="TABLEA" serializeAs="String">
<value>TABLEA</value>
</setting>
</Project1.Properties.Settings>
</applicationSettings>
</configuration>
.net
web-config
app-config
Джадер Диас
источник
источник
Ответы:
С основным
<appSettings>
легче разобраться - просто нажмите на<add key="...." value="..." />
запись, и все готово.Недостатком является то, что здесь нет проверки типов, например, вы не можете с уверенностью предположить, что ваш номер, который вы хотите настроить, действительно есть число - кто-то может вставить строку в этот параметр ..... вы просто получаете к нему доступ, а
ConfigurationManager["(key)"]
затем он работает чтобы вы знали, с чем имеете дело.Кроме того, со временем, это
<appSettings>
может стать довольно запутанным и грязным, если многие части вашего приложения начнут помещать туда вещи (помните старый файл windows.ini? :-)).Если вы можете, я бы предпочел и порекомендовал использовать ваши собственные разделы конфигурации - с .NET 2.0 это действительно стало довольно легко. Таким образом, вы можете:
Есть серия действительно хороших статей о том, как демистифицировать систему конфигурации .NET 2.0 в CodeProject:
Разгадывание тайн конфигурации .NET 2.0
Расшифровка тайн конфигурации .NET 2.0
Раскрывая тайны конфигурации .NET 2.0
Настоятельно рекомендуется! Джон Риста проделал большую работу, объясняя систему конфигурации в .NET 2.0.
источник
Настройками приложения можно управлять из конструктора (обычно это файл Settings.settings по умолчанию), поэтому его проще изменить, и вы можете получить к ним программный доступ через класс Settings, где они выглядят как строго типизированное свойство. Вы также можете иметь настройки уровня приложения и пользователя, а также настройки по умолчанию для отката.
Это доступно с .NET 2.0 и далее, и устарел другой способ сделать это (насколько я могу судить).
Более подробная информация дана по адресу: msdn.microsoft.com/en-us/library/k4s6c3a0.aspx
источник
Я использовал шаблон, который нашел некоторое время назад, когда вы используете базовые теги xml, но оборачиваете настройки в статический класс конфигурации. Итак - сделай сам. Настройки.
Шаблон статической конфигурации DotNetPearls
Если вы делаете это таким образом, вы можете:
Это утомительно, но хорошо работает, скрывает ссылки на ключевые имена и строго типизировано. Этот тип шаблона хорошо работает для конфигурации, которая не изменяется приложением, хотя вы, вероятно, могли бы работать и для поддержки изменений.
Config:
Конфиг класс:
источник
Чтобы понять плюсы и минусы настроек в
app.config
, я предлагаю вам изучить технические детали обоих. Я включил ссылки, где вы можете найти исходный код для обработки, описывая более технические детали ниже.Позвольте мне кратко изложить то, что я узнал, когда работал с ними ( примечание: то же самое применимо к
web.config
файлу веб-сайта / веб-приложения):Pros
Они позволяют хранить типизированные данные, в том числе типы объектов (через
serializeAs
свойство)У них есть область действия пользователя и приложения, позволяющая хранить значения по умолчанию
Они поддерживаются в разделе конфигурации Visual Studio
Длинные строки и / или данные со специальными символами очень хорошо поддерживаются (например, встроенные строки JSON, содержащие двойные кавычки)
Cons
Пользовательские настройки хранятся в другом месте в профиле пользователя (с загадочным путем), может быть трудно очистить
Параметры области приложения доступны только для чтения во время выполнения приложения (только параметры области пользователя могут быть изменены во время выполнения)
Код методов чтения / записи, созданный конструктором настроек Visual Studio, напрямую не предоставленный сторонними инструментами (см. Ссылку выше для обходного решения)
Pros
«Легкие», то есть легкие в обращении
Доступ на чтение и запись во время выполнения приложения
Они могут быть легко отредактированы администраторами в
Диспетчере информационных служб Интернета (IIS)
(Просмотр функций -> Параметры приложения, обратите внимание, что имя значка вводит в заблуждение, поскольку оно может обрабатывать только параметры приложения, а не параметры приложения)
Cons
Поддержка только строковых данных; Длина строки и специальные символы ограничены
У них нет области действия пользователя
Они не поддерживают значения по умолчанию
Непосредственно не поддерживаются в разделе конфигурации Visual Studio
источник
Мне нравится работать с более простой версией для хранения и доступа к отдельным значениям.
Я написал служебный класс для доступа к значениям безопасным для типов способом, который допускает значения по умолчанию. Если значения по умолчанию не предоставлены, тогда выдаются полезные сообщения об исключениях.
Вы можете увидеть / скачать класс здесь:
http://www.drewnoakes.com/code/util/app-settings-util/
источник
App.config
файл и использовать свой собственный файл конфигурации. Множество библиотек делают это. NLog приходит на ум.