.DLL, और अच्छे कारण के लिए .NET कॉन्फ़िगरेशन फ़ाइल बनाना तुच्छ नहीं है। .NET कॉन्फ़िगरेशन मैकेनिज्म में ऐप को आसान अपग्रेड / अपडेट करने की सुविधा प्रदान करने के लिए और एक दूसरे को कॉन्फ़िगरेशन फ़ाइलों को रौंदने से इंस्टॉल किए गए ऐप्स को सुरक्षित रखने के लिए बहुत सारी सुविधाएँ हैं।
DLL का उपयोग कैसे किया जाता है और अनुप्रयोग का उपयोग कैसे किया जाता है, इसके बीच एक बड़ा अंतर है। आपके पास एक ही उपयोगकर्ता के लिए एक ही मशीन पर इंस्टॉल किए गए एप्लिकेशन की कई प्रतियां होने की संभावना नहीं है। लेकिन आपके पास बहुत अच्छी तरह से 100 अलग-अलग ऐप या लाइब्रेरी हो सकते हैं जो सभी कुछ .NET DLL का उपयोग कर रहे हैं।
जहां एक उपयोगकर्ता प्रोफ़ाइल के भीतर ऐप की विभिन्न प्रतियों के लिए अलग-अलग सेटिंग्स को ट्रैक करने की आवश्यकता शायद ही हो, यह बहुत संभावना नहीं है कि आप एक DLL के सभी अलग-अलग उपयोगों को एक दूसरे के साथ कॉन्फ़िगरेशन साझा करना चाहते हैं। इस कारण से, जब आप "सामान्य" विधि का उपयोग करके एक कॉन्फ़िगरेशन ऑब्जेक्ट पुनः प्राप्त करते हैं, तो आपके द्वारा वापस प्राप्त की जाने वाली ऑब्जेक्ट उस विशेष डोमेन के बजाय आपके द्वारा निष्पादित किए जा रहे ऐप डोमेन के कॉन्फ़िगरेशन से जुड़ी होती है।
ऐप डोमेन रूट असेंबली के लिए बाध्य है जो आपके कोड को वास्तव में असेंबली में लोड करता है। ज्यादातर मामलों में यह आपके मुख्य .EXE की विधानसभा होगी, जो कि .DLL को लोड करती है। किसी एप्लिकेशन के भीतर अन्य एप्लिकेशन डोमेन को स्पिन करना संभव है, लेकिन आपको स्पष्ट रूप से उस एप्लिकेशन डोमेन की मूल असेंबली के बारे में जानकारी प्रदान करनी होगी।
इस सब के कारण, लाइब्रेरी-विशिष्ट कॉन्फ़िगरेशन फ़ाइल बनाने की प्रक्रिया इतनी सुविधाजनक नहीं है। यह एक ही प्रक्रिया आप किसी विशेष विधानसभा से बंधा नहीं एक मनमाना पोर्टेबल कॉन्फ़िग फ़ाइल बनाने के लिए प्रयोग करेंगे है, लेकिन जिसके लिए आप नेट के XML स्कीमा का उपयोग करना चाहते हैं, विन्यास खंड और config तत्व तंत्र, आदि एक बनाने यह जरूरत पर जोर देता ExeConfigurationFileMap
वस्तु , डेटा में लोड करना यह पहचानने के लिए कि कॉन्फिग फाइल कहां जमा होगी, और फिर कॉलिंग ConfigurationManager
। OpenMappedExeConfiguration
इसे एक नए Configuration
उदाहरण में खोलने के लिए। यह ऑटोमैटिक पाथ जनरेशन मैकेनिज्म द्वारा पेश किए गए वर्जन प्रोटेक्शन से आपको काट देगा ।
सांख्यिकीय रूप से बोल रहे हैं, आप शायद इस लाइब्रेरी का इन-हाउस सेटिंग में उपयोग कर रहे हैं, और यह संभावना नहीं है कि आपके पास किसी एक मशीन / उपयोगकर्ता के भीतर कई ऐप बनाने का उपयोग होगा। लेकिन अगर ऐसा नहीं है, तो आपको कुछ बातों का ध्यान रखना चाहिए। यदि आप अपने DLL के लिए एकल वैश्विक कॉन्फ़िग फ़ाइल का उपयोग करते हैं, तो उस ऐप की परवाह किए बिना जो इसे संदर्भित कर रहा है, आपको एक्सेस विरोधों के बारे में चिंता करने की आवश्यकता है। यदि आपकी लाइब्रेरी को संदर्भित करने वाले दो एप्लिकेशन एक ही समय में चल रहे हैं, प्रत्येक अपनी स्वयं की Configuration
वस्तु के साथ खुला है, तो जब कोई परिवर्तन सहेजता है, तो यह अगली बार जब आप दूसरे ऐप में डेटा पुनर्प्राप्त करने या सहेजने का प्रयास करते हैं, तो यह एक अपवाद का कारण होगा।
इसके आस-पास होने का सबसे सुरक्षित और सरल तरीका यह है कि विधानसभा जो आपके DLL को लोड कर रही है, वह भी अपने बारे में कुछ जानकारी प्रदान करे, या संदर्भित विधानसभा के ऐप डोमेन की जांच करके इसका पता लगाए। अपने DLL को संदर्भित करने वाले प्रत्येक ऐप के लिए अलग-अलग उपयोगकर्ता कॉन्फ़िगर फ़ाइलों को रखने के लिए कुछ प्रकार की फ़ोल्डर संरचना बनाने के लिए इसका उपयोग करें।
यदि आप निश्चित हैं कि आप अपने DLL के लिए वैश्विक सेटिंग्स रखना चाहते हैं, तो कोई फर्क नहीं पड़ता कि यह कहाँ संदर्भित है, तो आपको इसके लिए अपने स्थान का निर्धारण करने की आवश्यकता होगी। बजाय इसके कि आप अपने आप ही एक उपयुक्त का पता लगा लें। आपको फ़ाइल तक पहुँच प्रबंधित करने के बारे में भी आक्रामक होना पड़ेगा। Configuration
जब तक आपको लोड करने या सहेजने, तुरंत खोलने से पहले और तुरंत निपटाने के लिए जितनी जल्दी हो सके उतनी मात्रा में रखने की आवश्यकता होगी । और अंत में, आपको लाइब्रेरी का उपयोग करने वाले ऐप्स में से एक द्वारा संपादित किए जाने के दौरान फ़ाइल की सुरक्षा के लिए लॉक मैकेनिज्म की आवश्यकता होगी।