Personnellement, cela ne me dérange pas Web.Config pour les petites applications ponctuelles, mais pour quelque chose de substantiel j'évite de les utiliser pour la configuration de l'application.
est ici ce que je fais ...
- I définissent une ou plusieurs interfaces pour ma configuration en fonction de la complexité.
- Je crée différentes implémentations par environnement (dev, stage, prod, etc.)
- J'utilise une classe de base abstraite pour définir une configuration commune. Puis, j'utilise Ninject pour l'injection de dépendances, donc l'implémentation appropriée est fournie en fonction de l'environnement que je cible.
- Je code toujours aux interfaces de configuration et profite des vérifications de temps de compilation.
Voici un exemple ...
// Config Contract
public interface IWebAppConfig
{
string SmtpHost { get; }
string RootUrl { get; }
}
// Define Common Config Values (values that don't change per environment)
public abstract class AbstractWebAppConfig : IWebAppConfig
{
public string SmtpHost { get { return "smtp.google.com"; } }
public abstract RootUrl { get; }
}
// Dev Config Settings
public class DevWebAppConfig : AbstractWebAppConfig
{
public override string RootUrl { get { return "http://localhost:1322"; } }
}
// Stage Config Settings
public class StageWebAppConfig : AbstractWebAppConfig
{
public override string RootUrl { get { return "http://stage.mysite.com"; } }
}
// Prod Config Settings
public class ProdWebAppConfig : AbstractWebAppConfig
{
public override string RootUrl { get { return "http://www.mysite.com"; } }
}
Les avantages de cette approche:
- type Safe
- configuration est représentée comme objets non paires de valeurs clés (utiles pour le passage des regroupements logiques de valeurs de configuration au lieu de plusieurs valeurs)
- Plus facile à utiliser Classes de test dépendant des valeurs de configuration
- Partage con La figuration sur plusieurs applications est triviale
- Le déploiement de l'assembly contenant les implémentations de configuration déclenchera un recyclage du pool d'applications, un peu comme le redéploiement d'un fichier web.config.
Vous pouvez toujours utiliser le web.config pour définir l'environnement, ce qui est ce que je fais habituellement en ajoutant ce qui suit au appsettings:
<appSettings>
<!-- accepts: dev|stage|prod -->
<add key="Env" value="dev" />
</appSettings>
Sinon, il pourrait être la machine à base en utilisant Envrionnement Variables ou une autre construction
quel est le meilleur dans votre propre pense. dites-moi si vous avez vraiment quelqu'un de très bon point. –