2010-03-31 10 views
12

मैं सी # .NET का उपयोग कर रहा हूं।सॉफ्टवेयर सेटिंग्स प्रदान करने का सबसे अच्छा तरीका?

मेरे सॉफ़्टवेयर में मैं सेटिंग संवाद प्रदान कर रहा हूं जिसके माध्यम से उपयोगकर्ता एप्लिकेशन सेटिंग्स को सेट कर सकता है जिसे मैं किसी फ़ाइल में सहेजना चाहता हूं।

आवश्यकताएँ (विशिष्ट):

  1. हर वर्ग मैं परिभाषित इन सेटिंग्स के कुछ हिस्से का उपयोग करता है। तो, ये सभी वर्गों के लिए वैश्विक होना चाहिए।
  2. सॉफ़्टवेयर शुरू होने पर इन्हें लोड किया जाना चाहिए।
  3. जब भी उपयोगकर्ता सेटिंग्स बदलता है और 'सेव'/'लागू' क्लिक करता है। वर्तमान सेटिंग्स बदलना चाहिए।

मुझे आश्चर्य है कि ऐसा करने का सबसे अच्छा तरीका क्या है? साथ ही, डिस्क पर इन सेटिंग्स को सहेजने का सबसे अच्छा तरीका क्या है? मेरा मतलब है कि मुझे Settings क्लास ऑब्जेक्ट बनाना चाहिए और इसे 'settings.dat' पर क्रमबद्ध करना चाहिए या XML/JSON

जैसी संरचित फ़ाइल प्रदान करना चाहिए, यह लगभग हर दूसरे सॉफ़्टवेयर के लिए आवश्यक है। तो, इसके लिए कोई डिजाइन पैटर्न नहीं है?

संपादित करें:

ठीक है, कुछ है कि मुझे नहीं पता था thats। यह अच्छा है :)। लेकिन कहें कि उपयोगकर्ता मध्य में सॉफ़्टवेयर का उपयोग कर रहा है, फिर भी वह सेटिंग्स को बदलता है, फिर उन सभी अन्य ऑब्जेक्ट्स जो इन वैश्विक गुणों का उपयोग कर रहे हैं। सेटिंग्स। डिफॉल्ट। * बदला जाना चाहिए। क्या कोई अधिसूचना तंत्र है? किसी तरह की घटना?

उत्तर

7

.NET के साथ आने वाली सेटिंग क्लास बहुत आसान है, और मैं इसे अपनी अधिकांश परियोजनाओं के लिए उपयोग करता हूं। एक गॉचा देखने के लिए यह है कि एप्लिकेशन के हर नए संस्करण को अपनी सेटिंग्स फ़ाइल मिलती है, इसलिए सुनिश्चित करें कि आपके पास समझदार डिफ़ॉल्ट हैं। जब भी कोई नया EXE वितरित किया जाता है तो सभी सेटिंग्स गायब हो जाएंगी।

वैश्विक स्थिति सही ढंग से निपटने के लिए बहुत कठिन है, इसलिए मैं आमतौर पर प्रासंगिक रचनाओं को उनके रचनाकारों, या गुणों में विभिन्न वस्तुओं को पास करता हूं। और मैं आमतौर पर उन वस्तुओं में सेटिंग्स में परिवर्तन लागू नहीं करता हूं, क्योंकि, कई मामलों में, किसी ऑब्जेक्ट के लिए समझदारी से बदलती सेटिंग से निपटना बहुत कठिन होता है। इसके बजाय, मैं नई वस्तुओं के लिए नई सेटिंग्स का उपयोग करता हूं जैसा कि वे बनाए जाते हैं। यदि किसी सेटिंग को तुरंत लागू करने की आवश्यकता है, तो मैं बस पुरानी वस्तु को डंप करता हूं और एक नया बना देता हूं। यह सिर्फ आवेदन के विवरण पर निर्भर करता है।

यदि आपके पास अपनी सेटिंग्स स्क्रीन पर एक लागू बटन है, तो मैं उन्हें सहेजने के बाद सभी मानों को पुनः लोड करने और प्रदर्शित करने की अनुशंसा करता हूं। इस तरह डिस्प्ले वास्तव में वास्तव में सहेजे गए वास्तव में शामिल होना सुनिश्चित करता है। यदि कोई सेटिंग पार्स की जाती है तो यह महत्वपूर्ण हो सकता है। मैंने उपयोगकर्ताओं को एक विशेष क्षेत्र में एक महीने और दिन संयोजन दर्ज किया है, और उनके द्वारा उपयोग किए जाने वाले प्रारूप की अपेक्षा से अलग था, इसलिए सहेजा गया मूल्य गलत था। आवेदन के बाद स्क्रीन को अपडेट करके, इस तरह की त्रुटियों को स्पष्ट किया जा सकता है।

मुझे आशा है कि इससे मदद मिलती है!

+1

आप कर सकते हैं पिछले संस्करण से सेटिंग्स को नए में बदलने के लिए अपग्रेड विधि (http://msdn.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.upgrade.aspx) का उपयोग करें। बस सुनिश्चित करें कि आप इसे केवल एक बार कॉल करें। – Giorgi

+0

@Giorgi - दिलचस्प! मुझे यह कोशिश करनी होगी। –

+0

इस लिंक को http://msdn.microsoft.com/en-us/library/aa730869%28VS.80%29.aspx को उत्तर दें और जियोर्गी की टिप्पणी के अनुसार अपना उत्तर भी संपादित करें। ताकि मैं इसे एक उत्तर के रूप में स्वीकार कर सकूं। – claws

13

नेट परियोजनाओं में पहले से ही उपयोगकर्ता या एप्लिकेशन के लिए सेटिंग्स की धारणा है, जो उपर्युक्त आपकी सभी आवश्यकताओं को पूरा करेगी। सेटिंग्स पढ़ने और लिखने के लिए कक्षाएं हैं। मैं अत्यधिक अनुशंसा करता हूं कि आप स्वयं को कुछ रोल करने के बजाए इन्हें देखें।

Using Settings in C#

आप परियोजना प्रकार की एक किस्म में सेटिंग का उपयोग कर सकते हैं, हालांकि ASP.Net परियोजनाओं जैसी परियोजनाओं के कुछ प्रकार में, उपयोगकर्ता-स्तरीय सेटिंग उपलब्ध नहीं हो सकता।

आप एक सेटिंग वर्ग नेट सेटिंग्स पर एक फसाड है कि बनाना चाहिए:

+1

@womp, विभिन्न संस्करणों के बीच अद्यतन करना काफी मुश्किल हो सकता है। – Giorgi

+0

निश्चित रूप से - सामान्य रूप से वर्जनिंग मुश्किल है, और यह इसका एक और मामला है। हालांकि ओपी को आम तौर पर काफी समय बचा सकता है। – womp

+0

ये सेटिंग्स कहाँ संग्रहीत हैं? उस परियोजना की असेंबली के अंदर (डीएलएल/एक्सई)? या इसे किसी प्रकार की सेटिंग्स में संग्रहीत किया जाएगा। सेटिंग्स फाइलें जिन्हें मुझे अपने सॉफ़्टवेयर के साथ तैनात करना चाहिए। – claws

3

आप और womp दोनों सही हैं। इस तरह आप दोनों दुनिया के सर्वश्रेष्ठ प्राप्त करते हैं: एक हाथ से लुढ़का हुआ समाधान की कार्यक्षमता और कार्यान्वयन की आसानी आमतौर पर माइक्रोसॉफ्ट सिल्वर बुलेट से जुड़ी होती है।

0

मैं व्यक्तिगत रूप से Properties.Settings मार्ग पर जाऊंगा। अपने ऐप के गुण फ़ोल्डर में सेटिंग्स फ़ाइल जोड़ें। यह आपको अपने एप्लिकेशन की app.config फ़ाइल में आसानी से आइटम जोड़ने देता है। एक .NET क्लास में बनाया गया है जिसे आप सेटिंग फ़ाइल में पाए गए मानों को पढ़ने/लिखने के लिए उपयोग कर सकते हैं। फिर आप एक छोटी रैपर क्लास लिख सकते हैं जो उस कार्यक्षमता को समाहित करता है या बस पूरे स्थान पर निर्मित .net का उपयोग करता है।

मैं व्यक्तिगत रूप से एक थ्रेडसेफ सिंगलटन क्लास तैयार करता हूं जो छोटे में रैपर वर्ग का उपयोग करता है .net one। हां यह कुछ अतिरिक्त काम है लेकिन यह एक छोटी सी राशि है और आपको थोड़ा सा काम करने के लिए अपने ऐप में कुछ बेहतरीन शक्ति देता है।

संपादित करें: क्षमा करें एमएसडीएन सेटिंग्स लिंक को शामिल करना भूल गया।

http://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspx

0

के रूप में दूसरों सेटिंग सुविधा का उपयोग कर सुझाव दिया है जाने के लिए रास्ता है। सेटिंग ईवेंट को तब भी प्रदान करती हैं जब उन्हें अपडेट किया जाता है ताकि आप उन्हें संभाल सकें और आवश्यक कार्रवाई कर सकें। आप पिछले संस्करण से सेटिंग्स को नए में बदलने के लिए Upgrade विधि का भी उपयोग कर सकते हैं। बस सुनिश्चित करें कि आप इसे केवल एक बार कॉल करें (शायद इंस्टॉलर से)।

सेटिंग्स को नियंत्रण में भी बाध्य किया जा सकता है ताकि आपको उन्हें नियंत्रण से सेटिंग्स में मैन्युअल रूप से मैप करना पड़े।

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