मैं कुछ समय पहले पाया गया एक पैटर्न का उपयोग कर रहा हूँ जहाँ आप बेसिक xml टैग का उपयोग करते हैं, लेकिन सेटिंग्स को एक स्थिर विन्यास वर्ग में लपेटते हैं। तो - एक DIY ऐप।
DotNetPearls स्टेटिक कॉन्फ़िगरेशन पैटर्न
यदि आप इसे इस तरह से कर सकते हैं:
- अलग-अलग वातावरणों के लिए अलग-अलग विन्यास के विभिन्न मूल्यों का उपयोग करें (देव, परीक्षण, ठेस)
- प्रत्येक सेटिंग के लिए समझदार चूक के लिए प्रदान करते हैं
- यह निर्धारित करें कि मान कैसे परिभाषित और त्वरित हैं
यह स्थापित करने के लिए थकाऊ है, लेकिन अच्छा प्रदर्शन करता है, प्रमुख नामों के संदर्भ छिपाता है, और दृढ़ता से टाइप किया जाता है। इस तरह का पैटर्न कॉन्फिगरेशन के लिए अच्छा काम करता है जो एप्लिकेशन द्वारा नहीं बदला जाता है, हालाँकि आप शायद बदलावों के समर्थन में भी काम कर सकते हैं।
कॉन्फ़िग:
<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
}