C# (.NET) अनुप्रयोग कॉन्फ़िगरेशन: पूर्ण गाइड
\n\nकॉन्फ़िगरेशन C# (.NET) में आधुनिक अनुप्रयोगों के विकास के प्रमुख पहलुओं में से एक है। यह प्रोग्राम के मापदंडों को कोड से अलग करने की अनुमति देता है, जिससे अनुप्रयोग लचीला, पोर्टेबल और सुरक्षित बनता है। इस लेख में, हम Microsoft.Extensions.Configuration लाइब्रेरी पर विस्तार से चर्चा करेंगे - जो .NET Core और .NET 5/6/7/8+ में कॉन्फ़िगरेशन प्रबंधन के लिए मुख्य उपकरण है।
कॉन्फ़िगरेशन की आवश्यकता क्यों है?
\nहार्ड-कोडेड कनेक्शन स्ट्रिंग्स, URL या API कुंजियों के बजाय, कॉन्फ़िगरेशन आपको इन डेटा को फ़ाइलों (JSON, XML, INI), पर्यावरण चर या सीक्रेट्स में संग्रहीत करने की अनुमति देता है। यह विभिन्न वातावरणों (dev, staging, prod) पर डिप्लॉयमेंट को सरल बनाता है और सुरक्षा बढ़ाता है।
\n\nलाइब्रेरी के मुख्य घटक
\n- \n
- IConfiguration — इंटरफ़ेस, जो सेटिंग्स का एक एकीकृत ट्री प्रस्तुत करता है। \n
- IConfigurationBuilder — बिल्डर, जो विभिन्न स्रोतों से कॉन्फ़िगरेशन एकत्र करता है। \n
- ConfigurationRoot — रूट ऑब्जेक्ट, जो
IConfigurationको लागू करता है। \n - Source Providers — डेटा प्रदाता: JSON, XML, INI, Environment Variables, Command Line, Memory, Custom. \n
लाइब्रेरी की स्थापना
\nलाइब्रेरी .NET SDK का हिस्सा है, इसलिए अधिकांश प्रोजेक्ट्स के लिए अतिरिक्त स्थापना की आवश्यकता नहीं है। हालांकि, कंसोल अनुप्रयोगों में JSON फ़ाइलों के साथ काम करने के लिए पैकेज जोड़ना आवश्यक है:
\ndotnet add package Microsoft.Extensions.Configuration.Json\n\nमूल उदाहरण: appsettings.json से पढ़ना
\nएक appsettings.json फ़ाइल बनाएँ:
{\n "AppSettings": {\n "SiteName": "PythonLib",\n "Version": "1.0",\n "Logging": {\n "Level": "Information",\n "File": "logs/app.log"\n }\n }\n}\n\nअब इसे कंसोल अनुप्रयोग में पढ़ें:
\nusing Microsoft.Extensions.Configuration;\n\nclass Program\n{\n static void Main()\n {\n var builder = new ConfigurationBuilder()\n .SetBasePath(Directory.GetCurrentDirectory())\n .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);\n\n IConfiguration config = builder.Build();\n\n string siteName = config["AppSettings:SiteName"];\n string logLevel = config["AppSettings:Logging:Level"];\n\n Console.WriteLine($"Site: {siteName}, Log Level: {logLevel}");\n }\n}\n\nएकाधिक स्रोतों का उपयोग
\nMicrosoft.Extensions.Configuration का एक मुख्य लाभ स्रोत श्रृंखलाओं का समर्थन है। अंतिम जोड़ा गया स्रोत सबसे अधिक प्राथमिकता रखता है। एक सामान्य श्रृंखला:
- \n
appsettings.json— बुनियादी सेटिंग्स। \n appsettings.{Environment}.json— विशिष्ट वातावरण (Development, Production) के लिए सेटिंग्स। \n Environment Variables— CI/CD और Docker के लिए ओवरराइड। \n Command Line Arguments— लॉन्च के समय अस्थायी ओवरराइड के लिए। \n
श्रृंखला सेट करने का उदाहरण:
\nvar builder = new ConfigurationBuilder()\n .SetBasePath(Directory.GetCurrentDirectory())\n .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)\n .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)\n .AddEnvironmentVariables()\n .AddCommandLine(args);\n\nसेक्शन और स्ट्रॉन्गली टाइप्ड कॉन्फ़िगरेशन के साथ काम करना
\nसुविधा के लिए, कॉन्फ़िगरेशन सेक्शन को POCO-क्लासेस से जोड़ा जा सकता है। एक क्लास परिभाषित करें:
\npublic class AppSettings\n{\n public string SiteName { get; set; }\n public string Version { get; set; }\n public LoggingSettings Logging { get; set; }\n}\n\npublic class LoggingSettings\n{\n public string Level { get; set; }\n public string File