Question

J'écris une page qui peut utiliser deux thèmes différents et je vais stocker des informations sur chaque thème dans le fichier web.config.

Est-il plus efficace de créer un nouveau groupe de sections et de tout stocker ensemble ou simplement de tout placer dans appSettings?

solution de configuration

<configSections>
    <sectionGroup name="SchedulerPage">
        <section name="Providers" type="System.Configuration.NameValueSectionHandler"/>
        <section name="Themes" type="System.Configuration.NameValueSectionHandler"/>
    </sectionGroup>
</configSections>
<SchedulerPage>
    <Themes>
        <add key="PI" value="PISchedulerForm"/>
        <add key="UB" value="UBSchedulerForm"/>
    </Themes>
</SchedulerPage>

Pour accéder aux valeurs de la configSection, j'utilise ce code:

    NameValueCollection themes = ConfigurationManager.GetSection("SchedulerPage/Themes") as NameValueCollection;
    String SchedulerTheme = themes["UB"];

solution appSettings

<appSettings>
    <add key="PITheme" value="PISchedulerForm"/>
    <add key="UBTheme" value="UBSchedulerForm"/>
</appSettings>

Pour accéder aux valeurs dans appSettings, j'utilise ce code

    String SchedulerTheme = ConfigurationManager.AppSettings["UBSchedulerForm"].ToString();
Était-ce utile?

La solution

Pour une configuration plus complexe, j'utiliserais une section de configuration personnalisée qui définit clairement les rôles de chaque section, par exemple

.
<appMonitoring enabled="true" smtpServer="xxx">
  <alertRecipients>
    <add name="me" email="me@me.com"/>
  </alertRecipient>
</appMonitoring>

Dans votre classe de configuration, vous pouvez exposer vos propriétés avec quelque chose comme

.
public class MonitoringConfig : ConfigurationSection
{
  [ConfigurationProperty("smtp", IsRequired = true)]
  public string Smtp
  {
    get { return this["smtp"] as string; }
  }
  public static MonitoringConfig GetConfig()
  {
    return ConfigurationManager.GetSection("appMonitoring") as MonitoringConfig
  }
}

Vous pouvez ensuite accéder aux propriétés de configuration de la manière suivante à partir de votre code

string smtp = MonitoringConfig.GetConfig().Smtp;

Autres conseils

Il n'y aura pas de différence mesurable en termes d'efficacité.

AppSettings est idéal si vous n'avez besoin que de paires nom / valeur.

Pour les choses plus complexes, créez une section de configuration personnalisée.

Pour l'exemple que vous avez mentionné, j'utiliserais appSettings.

Il n'y aura aucune différence de performances, car ConfigurationManager.AppSettings appelle simplement GetSection ("appSettings"). Si vous devez énumérer toutes les clés, une section personnalisée sera plus pratique que d’énumérer tous les appSettings et de rechercher un préfixe sur les clés. Sinon, il est plus facile de s'en tenir à appSettings, sauf si vous avez besoin de quelque chose de plus complexe que NameValueCollection.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top