2012-10-27 14 views
17

यह एक मामूली सवाल की तरह लग सकता है, हालांकि मैंने वेब पर संक्षेप में देखा है और मुझे जो मिला वह app.config मूल रूप से एप्लिकेशन के लिए आवेदन कुंजी/डेटा के जोड़े को संग्रहीत करने के लिए एक पुरानी तंत्र है।सी # App.config बनाम सेटिंग्स फ़ाइल

मुझे क्या पता होना चाहिए कि हम (जैसे .NET डेवलपर) पर app.config का उपयोग करने का विकल्प चुनेंगे?

- किसी को कृपया कुछ पेशेवरों और विपक्ष प्रदान कर सकते हैं ताकि हम उन्हें सही तरीके से उपयोग कर सकें।

धन्यवाद फिर से

+0

एप्लिकेशन विस्तृत सेटिंग्स app.config में संग्रहीत हो जाती है http://geekswithblogs.net/mbcrump/archive/2010/06/17/configuring-applicationuser-settings-in-wpf-the-easy-way.aspx – kenny

+0

हाँ लेकिन एप्लिकेशन – IEnumerable

+2

हां के रूप में दायरे का चयन करके ऐप विस्तृत सेटिंग्स का उपयोग सेटिंग फ़ाइल में भी किया जा सकता है। सेटिंग्स फ़ाइल के कवर के नीचे देखें और यह app.config – kenny

उत्तर

25

डेस्कटॉप अनुप्रयोगों के लिए App.config और वेब अनुप्रयोगों के लिए Web.config .NET कॉन्फ़िगरेशन सिस्टम का हिस्सा हैं। मुख्य रूप से वे हमारे आवेदन के संबंध में .NET ढांचे सेटिंग्स को नियंत्रित करने के लिए उपयोग किया जाता है। ये ऐसी कॉन्फ़िगरेशन सेटिंग्स हैं जो असेंबली के संस्करणों के प्रतिस्थापन (अनुभाग < असेंबली बाइंडिंग >), .NET फ्रेमवर्क संस्करण (< स्टार्टअप >) आदि का प्रतिस्थापन (पूर्ण app.config स्कीमा के लिए msdn देखें।) एक अनुभाग कस्टम सेटिंग्स के लिए समर्पित है एप्लिकेशन डेवलपर्स (< ऐपसेटिंग >)। कस्टम अनुभाग बनाने की संभावना भी है। इसलिए, जब हमें सेटिंग्स को स्टोर करने की आवश्यकता होती है तो हम या तो app.config पर पिग्गी-बैक कर सकते हैं या अपनी अलग कॉन्फ़िगरेशन फाइलें बना सकते हैं।

यहां प्रो और app.config का उपयोग करने का contras हैं:

  1. प्रो: वहां पहले से ही appSettings अनुभाग से सेटिंग पढ़ने .NET में एक मानक एपीआई है। अगर आपको केवल कुछ कॉन्फ़िगरेशन सेटिंग्स की आवश्यकता है, तो अपनी कॉन्फ़िगरेशन फ़ाइलों को पढ़ने के लिए अपनी खुद की कक्षा को विकसित और परीक्षण करने के बजाय इस तैयार एपीआई का उपयोग करना बहुत आसान है। इसके अलावा, app.config फ़ाइल पहले से ही आपके लिए वीएस प्रोजेक्ट में शामिल है।

  2. प्रो: machine.config/app.config का एक मानक पदानुक्रम है। यदि आप ऐसी सेटिंग्स की योजना बनाते हैं जिन्हें अलग-अलग अनुप्रयोगों के लिए मशीन-व्यापी और ओवरराइड या बाएं सेट किया जा सकता है, तो आपको app.config का उपयोग करना चाहिए।

  3. प्रो/कॉन: App.config रन-टाइम में कैश किया गया है। यदि आप अपने एप्लिकेशन के चलते इसके अपडेट का अनुमान लगाते हैं, तो आपको विशेष रूप से कॉन्फ़िगरेशन फ़ाइल के कुछ अनुभाग को रीफ्रेश करने का अनुरोध करना होगा। Web.config के लिए फ़ाइल में कुछ बदलते समय वेब ऐप स्वचालित रूप से पुनरारंभ होता है। यह काफी सुविधाजनक है।

  4. Con: app.config को आपकी .exe फ़ाइल के समान निर्देशिका में संग्रहीत किया जाता है। आम तौर पर यह सी: \ प्रोग्राम फ़ाइलों के सबफ़ोल्डर में होगा। यह निर्देशिका विंडोज 7 में लेखन से अतिरिक्त संरक्षित है।आपको वहां लिखने के लिए व्यवस्थापक समूह का सदस्य होना चाहिए और यदि नियंत्रण कक्ष में आपका यूएसी (उपयोगकर्ता एक्सेस कंट्रोल) स्तर 0 पर सेट नहीं है (जो आमतौर पर नहीं है), तो आपको ओएस द्वारा सी से पूछने की पुष्टि करने के लिए कहा जाएगा: \ कार्यक्रम फाइलें। इसलिए, व्यवस्थापक अधिकार के बिना उपयोगकर्ता app.config में कॉन्फ़िगरेशन को बदलने में सक्षम नहीं होंगे। प्रोग्रामेटिक रूप से आपकी सेटिंग्स को बदलने के लिए वही होता है: ऐप.कॉन्फिग लिखने का प्रयास करते समय आपका एप्लिकेशन अपवाद प्राप्त होगा यदि यह विंडोज 7 पर किसी व्यवस्थापक उपयोगकर्ता के अंतर्गत नहीं चलता है। आपकी स्वयं की कॉन्फ़िगरेशन फ़ाइलें आमतौर पर C: \ ProgramData \ या c: \ Users subfolder पर जाती हैं (विंडोज 7 पर)। ये स्थान उपयोगकर्ता या कार्यक्रमों द्वारा लिखित करने के लिए मित्रवत हैं।

  5. Con: यदि उपयोगकर्ता ने आपकी app.config फ़ाइल संपादित की है और गलती से इसे दूषित कर दिया है, तो पूरा एप्लिकेशन कुछ अस्पष्ट त्रुटि संदेश से शुरू नहीं होगा। यदि आपकी अलग कॉन्फ़िगरेशन फ़ाइल दूषित हो गई है, तो आप अधिक विस्तृत त्रुटि संदेश प्रदान करने में सक्षम होंगे।

निष्कर्ष में: app.config आपको आसान (तेज़ विकास) दृष्टिकोण देता है, जो आमतौर पर केवल पढ़ने के लिए उपयुक्त सेटिंग्स के लिए उपयुक्त है। कस्टम सेटिंग्स फ़ाइल आपको अधिक स्वतंत्रता प्रदान करती है (फ़ाइल को संग्रहीत करने के लिए, सत्यापन/त्रुटि प्रबंधन, इसकी स्कीमा के साथ अधिक लचीलापन) लेकिन विकास के दौरान और अधिक काम की आवश्यकता है।

1

आप इसे पीछे की ओर, सेटिंग फ़ाइल (या INI फ़ाइल के रूप में वे मूल रूप से कहा जाता था) आवेदन सेटिंग्स (कुंजी/मान जोड़े) Windows 95 से पहले रिलीज के साथ पकड़ करने के लिए इस्तेमाल किया तंत्र था विंडोज 95 की यह सिफारिश की गई थी कि एप्लिकेशन सेटिंग्स को विंडोज रजिस्ट्री में ले जाया जा सके (जो समस्याग्रस्त साबित हुआ क्योंकि आपने अपनी रजिस्ट्री को खराब कर दिया है, तो आपका विंडोज अब शुरू नहीं हो सकता है)।

.config फ़ाइल .Net के साथ खेल में आई। एक्सएमएल प्रारूप सरल कुंजी/मूल्य जोड़े की तुलना में अधिक गतिशील और जटिल सेटिंग्स विन्यास की अनुमति देता है।

आधुनिक उपयोगकर्ता/सेटिंग्स फ़ाइल .config फ़ाइल का एक एक्सएमएल एक्सटेंशन है (सेटिंग्स जो विशिष्ट स्थितियों के तहत .config में कुछ सेटिंग्स को ओवरराइड कर सकती हैं)।

+0

ठीक उसी प्रश्न पर वापस आ जाएगा, .NET VS में हम सेटिंग.सेटिंग फ़ाइल या app.config जोड़ सकते हैं। क्यों न केवल app.config – IEnumerable

+0

नेट में सेटिंग्स हेरार्कियल हैं। Machine.config फ़ाइल में मशीन की विस्तृत सेटिंग्स होती हैं और केवल रनटाइम पर पढ़ी जाती हैं। App.config में एप्लिकेशन विस्तृत सेटिंग्स (जो या तो मशीन.कॉन्फिग में सेटिंग्स को जोड़ती है, या ओवरराइड करती है), केवल रनटाइम पर ही पढ़ी जाती है। विशिष्ट उपयोगकर्ता सेटिंग्स user.config ("सेटिंग्स") फ़ाइल में निहित हैं और या तो app.config में सेटिंग्स को जोड़ या ओवरराइड करते हैं। User.config फ़ाइल को रनटाइम पर सहेजा जा सकता है। – Kevin

+3

उपरोक्त टिप्पणी को फिर से पढ़ने के बाद - मैंने अभी भी "क्यों" प्रश्न का उत्तर नहीं दिया। एप्लिकेशन को चलाने के लिए आवश्यक कुछ सेटिंग्स (जैसे डेटाबेस कनेक्शन जानकारी, कतार नाम इत्यादि) उपयोगकर्ता द्वारा अद्यतन नहीं किया जाना चाहिए और app.config में होना चाहिए। अन्य सेटिंग्स (जैसे इनपुट फ़ाइल पथ, आउटपुट फ़ाइल पथ इत्यादि) आप उपयोगकर्ता को रूट पर बदलने की अनुमति दे सकते हैं और अद्यतन जानकारी को सहेजने की क्षमता रखते हैं। इन प्रकार की सेटिंग्स user.config ("सेटिंग्स") फ़ाइल में होनी चाहिए। – Kevin

संबंधित मुद्दे