Ben temel xml etiketleri kullanın ama ayarları statik bir yapılandırma sınıfında sarın bir süre geri buldum bir desen kullanıyorum. Yani - bir DIY Uygulaması Ayarları.
DotNetPearls Statik Yapılandırma Deseni
Bu şekilde yaparsanız şunları yapabilirsiniz:
- farklı ortamlar için farklı yapılandırma değerleri kümeleri kullanma (dev, test, prod)
- her ayar için makul varsayılanlar sağlayın
- değerlerin nasıl tanımlandığını ve somutlaştırıldığını kontrol edin
Ayarlamak sıkıcıdır, ancak iyi performans gösterir, anahtar adlarına referansları gizler ve güçlü bir şekilde yazılmıştır. Bu tür bir desen, uygulama tarafından değiştirilmeyen yapılandırma için iyi çalışır, ancak muhtemelen değişiklikler için destekte de çalışabilirsiniz.
Yapılandırma:
<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" />
Yapılandırma sınıfı:
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
}