Плюсы и минусы параметр appsettings против applicationsettings так (.Net приложение.config / Web.конфиг)
при разработке приложения .NET Windows Forms у нас есть выбор между ними 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>
5 ответов:
базовый
<appSettings>легче иметь дело с - просто шлепнуть в<add key="...." value="..." />вход и вы сделали.недостатком является: Нет проверки типа, например, вы не можете безопасно предположить, что ваш номер, который вы хотели настроить, действительно есть номер-кто-то может поместить строку в эту настройку..... вы просто получите доступ к нему как
ConfigurationManager["(key)"]и тогда это до вас, чтобы знать, с чем вы имеете дело.также, со временем,
<appSettings>может стать довольно запутанным и грязным, если много части вашего приложения начинают помещать туда вещи (помните старые окна.ini-файл? :-)).если вы можете, я бы предпочел и рекомендовал использовать свои собственные разделы конфигурации - с .NET 2.0, это действительно стало довольно легко, таким образом, вы можете:
- a) определите свои параметры конфигурации в коде и сделайте их типобезопасными и проверил
- b) вы можете чисто отделить код настройки все и вы можете повторно использовать свою конфигурацию и код тоже!
есть ряд действительно хороших статей о вас, чтобы демистифицировать систему конфигурации .NET 2.0 на CodeProject:
высоко рекомендуется! Джон Риста проделал большую работу, объясняя систему конфигурации в .NET 2.0.
настройки приложения можно управлять из дизайнера (обычно настройками.файл настроек по умолчанию), поэтому его легче изменить, и вы можете получить к ним доступ программно через класс настроек, где они отображаются как строго типизированное свойство. Вы также можете иметь приложения и настройки пользователя, а также настройки по умолчанию для отката.
Это доступно с .NET 2.0 и далее и осуждает другой способ сделать это (насколько я могу рассказывать.)
более подробная информация приведена по адресу:msdn.microsoft.com/en-us/library/k4s6c3a0.aspx
Я использую шаблон, который я нашел некоторое время назад, где вы используете основные теги xml, но переносите настройки в статический класс конфигурации. Так - приложение.Настройки.
DotNetPearls Статический Шаблон Конфигурации
Если вы делаете это таким образом, вы можете:
- используйте разные наборы значений конфигурации для разных сред (dev, test, prod)
- обеспечить разумные значения по умолчанию для каждого параметра
- контролировать, как значения определен и создан экземпляр
это утомительно настроить, но работает хорошо, скрывает ссылки на имена ключей и строго типизирован. Этот тип шаблона хорошо работает для конфигурации, которая не изменяется приложением, хотя вы, вероятно, могли бы работать и в поддержку изменений.
Config:
<add key="machineName" value="Prod" /> <add key="anotherMachineName" value="Test" /> <add key="EnvTypeDefault" value="Dev" /> <add key="RootURLProd" value="http://domain.com/app/" /> <add key="RootURLTest" value="http://test.domain.com/app/" /> <add key="RootURLDev" value="http://localhost/app/" /> <add key="HumanReadableEnvTypeProd" value="" /> <add key="HumanReadableEnvTypeTest" value="Test Mode" /> <add key="HumanReadableEnvTypeDev" value="Development Mode" />класса конфигурации:
using System; using System.Collections.Generic; using System.Web; using WebConfig = System.Web.Configuration.WebConfigurationManager; public static class Config { #region Properties public static string EnvironmentType { get; private set; } public static Uri RootURL { get; private set; } public static string HumanReadableEnvType { get; private set; } #endregion #region CTOR /// <summary> /// Initializes all settings when the app spins up /// </summary> static Config() { // Init all settings here to prevent repeated NameValueCollection lookups // Can increase performance on high volume apps EnvironmentType = WebConfig.AppSettings[System.Environment.MachineName] ?? "Dev"; RootURL = new Uri(WebConfig.AppSettings["RootURL" + EnvironmentType]); HumanReadableEnvType = WebConfig.AppSettings["HumanReadableEnvType" + Config.EnvironmentType] ?? string.Empty; } #endregion }
Мне нравится работать с более простой версией для хранения и доступа к отдельным значениям.
<appSettings> <add key="MyConfigKey" value="true"/> </appSettings>Я написал служебный класс для доступа к значениям типобезопасным способом, который позволяет использовать значения по умолчанию. Если значения по умолчанию не указаны, то выдаются полезные сообщения об исключениях.
вы можете посмотреть/скачать здесь класс:
понять плюсы и минусы параметры
app.config, Я предлагаю вам заглянуть в технические детали. Я включил ссылки, где вы можете найти исходный код для обработки, описывая более технические детали ниже.позвольте мне кратко суммировать то, что я узнал, когда я работал с ними (Примечание: то же самое относится к
web.configфайл веб-сайта / web применение):
applicationSettings
(нажмите выше для просмотра исходного кода и технических деталей)
плюсы
Они позволяют хранить типизированные данные, в том числе типы объектов (через
serializeAsсобственность)Они имеют область пользователя и приложения, что позволяет хранить значения по умолчанию
Они поддерживается в разделе конфигурации Visual Studio
длинные строки и / или данные со специальными символами очень хорошо поддерживаются (например, встроенные строки JSON, содержащие двойные кавычки)
минусы
пользовательские настройки хранятся в другом месте в профиле пользователя (с загадочным путем), может быть трудно очистить
приложения параметры области доступны только для чтения во время выполнения приложения (только пользовательские параметры области могут быть изменены во время выполнения)
чтение / запись методов код, созданный дизайнером параметров Visual Studio, не предоставляется непосредственно сторонними инструментами (см. ссылку выше для решения обходного пути)
AppSettings
(нажмите выше, чтобы просмотреть исходный код и технические подробности)
плюсы
являются "легкий вес", т. е. легко обрабатывать
чтение и запись во время выполнения приложения
Они могут быть легко отредактированы администраторами в
информационные службы Интернета (IIS) руководитель
(особенности просмотра - > Настройки Приложения, обратите внимание, что имя значка вводит в заблуждение, так как он может обрабатывать только AppSettings, а не ApplicationSettings)
минусы
поддержка только строковых данных; длина строки и специальные символы ограничены
у них нет пользовательской области
Они не поддерживают значения по умолчанию
не поддерживаются непосредственно в конфигурации Visual Studio раздел
Comments