आवेदन विन्यास फाइलें

ठीक है, इसलिए मैं यहां एक पवित्र युद्ध शुरू नहीं करना चाहता हूं, लेकिन हम अपने आवेदन कॉन्फ़िगरेशन फ़ाइलों को संभालने के तरीके को मजबूत करने की प्रक्रिया में हैं और हम लेने के लिए सर्वोत्तम दृष्टिकोण पर निर्णय लेने के लिए संघर्ष कर रहे हैं । फिलहाल, हम जो भी एप्लिकेशन वितरित करते हैं, वह अपनी स्वयं की विज्ञापन-कॉन्फ़िगरेशन फ़ाइलों का उपयोग कर रहा है, भले ही यह संपत्ति फाइलें (आईएनआई शैली), एक्सएमएल या जेएसओएन (केवल इस समय आंतरिक उपयोग!)।

फिलहाल हमारे अधिकांश कोड जावा हैं, इसलिए हम अपाचे कॉमन्स कॉन्फ़िगर देख रहे हैं, लेकिन हम हमने इसे काफी वर्बोज़ पाया है। हमने XMLBeans को भी देखा है, लेकिन ऐसा लगता है कि यह बहुत सारे फफिंग के आसपास है। मुझे यह भी लगता है कि मुझे एक्सएमएल की तरफ प्रारूप के रूप में धकेल दिया जा रहा है, लेकिन मेरे ग्राहक और सहयोगी कुछ और करने की कोशिश करने से डरते हैं। मैं इसे क्लाइंट के परिप्रेक्ष्य से समझ सकता हूं, सभी ने एक्सएमएल के बारे में सुना है, लेकिन दिन के अंत में, नौकरी के लिए सही उपकरण का उपयोग नहीं करना चाहिए?

आजकल उत्पादन प्रणालियों में लोग किस प्रारूप और पुस्तकालयों का उपयोग कर रहे हैं, क्या कोई और कोण से बचने का प्रयास कर रहा है ब्रैकेट कर ?

Edit: really needs to be a cross platform solution: Linux, Windows, Solaris etc. and the choice of library used to interface with configuration files is just as important as the choice of format.

0
ro fr bn
सिर्फ यह कहने के लिए उभरा कि XMLBeans "चारों ओर बहुत सारे फफिंग की तरह लगता है"
जोड़ा लेखक Cheeso, स्रोत

9 उत्तर

एक्सएमएल एक्सएमएल xml एक्सएमएल। हम यहां कॉन्फ़िगरेशन फ़ाइलें बात कर रहे हैं। यदि आप प्रदर्शन-तीव्र स्थिति में वस्तुओं को क्रमबद्ध नहीं कर रहे हैं तो कोई "कोण ब्रैकेट कर" नहीं है।

मशीन पठनीय के अलावा, कॉन्फ़िगर फ़ाइलों को मानव पठनीय और मानव समझने योग्य होना चाहिए। एक्सएमएल दोनों के बीच एक अच्छा समझौता है।

अगर आपकी दुकान में ऐसे लोग हैं जो उस नई फंक्ड एक्सएमएल तकनीक से डरते हैं, तो मुझे आपके लिए बुरा लगता है।

0
जोड़ा
यह फिर एक अलग समय था ...
जोड़ा लेखक THIS USER NEEDS HELP, स्रोत
यकीन नहीं है कि कटाक्ष है, लेकिन यह देखते हुए कि जवाब 9 साल का है, मुझे लगता है कि यह नहीं है। :)
जोड़ा लेखक kromit, स्रोत

एक नया पवित्र युद्ध शुरू किए बिना, 'कोण ब्रैकेट टैक्स' पोस्ट की भावनाएं एक ऐसा क्षेत्र है जहां मैं जेफ के साथ मुख्य रूप से असहमत हूं । एक्सएमएल के साथ कुछ भी गलत नहीं है, यह उचित रूप से मानव पठनीय है (जितना अधिक वाईएएमएल या जेएसओएन या आईएनआई फाइलें हैं) लेकिन याद रखें कि इसका इरादा मशीनों द्वारा पढ़ा जाना है। अधिकांश भाषा/ढांचे के combos कुछ प्रकार के एक्सएमएल पार्सर के साथ आते हैं जो एक्सएमएल को एक बहुत अच्छी पसंद बनाता है।

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

उथल-पुथल आपको इस बारे में सोचना होगा कि आप उत्पादन में एक बार इन फ़ाइलों को कितनी बार छूने जा रहे हैं, शायद अक्सर नहीं।

यह अभी भी मेरे लिए एक्सएमएल के बारे में सब कुछ कहता है और यह अभी भी कॉन्फ़िगरेशन फ़ाइलों के लिए वैध विकल्प क्यों है ( टिम ब्रै ):

"यदि आप सामान्य उद्देश्य डेटा प्रदान करना चाहते हैं कि रिसीवर अप्रत्याशित अजीब और पागल चीजें करना चाहे, या यदि आप सचमुच भयानक और i18n के बारे में picky बनना चाहते हैं, या यदि आप भेज रहे हैं तो अधिक पसंद है एक संरचना की तुलना में एक दस्तावेज़, या यदि डेटा का क्रम मायने रखता है, या यदि डेटा संभावित रूप से लंबे समय तक रहता है (जैसे, सेकंड से अधिक) एक्सएमएल जाने का तरीका है। मुझे यह भी लगता है कि एक्सएमएल और एक्सपीएथ का संयोजन डाटा प्रारूपों के लिए एक मीठा स्थान हिट करता है जिसे एक्स्टेंसिबल होने की आवश्यकता होती है; ऐसा कहने के लिए, एक्सएमएल-प्रोसेसिंग कोड लिखना बहुत आसान है जो संदेश प्रारूप में बदलाव की उपस्थिति में विफल नहीं होता है जो आपके द्वारा की जाने वाली टुकड़े को स्पर्श नहीं करता है। "

0
जोड़ा
इच्छा है कि मैं इसे और अधिक बढ़ा सकता हूं
जोड़ा लेखक Cheeso, स्रोत

जहां तक ​​मुझे पता है, यदि आप .NET का उपयोग कर रहे हैं तो Windows रजिस्ट्री कॉन्फ़िगरेशन को संग्रहीत करने का पसंदीदा तरीका नहीं है - अधिकांश एप्लिकेशन अब सिस्टम का उपयोग करते हैं। कॉन्फ़िगरेशन [1, 2]। चूंकि यह एक्सएमएल आधारित है, ऐसा लगता है कि सब कुछ कॉन्फ़िगरेशन के लिए एक्सएमएल का उपयोग करने की दिशा में आगे बढ़ रहा है।

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

कोण ब्रैकेट कर के लिए - मैं इसके बारे में अक्सर चिंता नहीं करता क्योंकि एक्सएमएल पुस्तकालय इसे सारण करने का ख्याल रखते हैं। एकमात्र समय यह विचार हो सकता है कि यदि आपके पास काम करने के लिए बहुत कम भंडारण स्थान है और प्रत्येक बाइट गिनती है।

[1] System.Configuration Namespace - http://msdn.microsoft.com/en-us/library/system.configuration.aspx

[2] Using Application Configuration Files in .NET - http://www.developer.com/net/net/article.php/3396111

0
जोड़ा

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

0
जोड़ा

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

0
जोड़ा
आईएनआई किसी भी मानक द्वारा परिभाषित नहीं है, और केवल एक कुंजी/मूल्य स्टोर होने के लिए कुछ सीमाएं हैं
जोड़ा लेखक CharlesB, स्रोत

पुन: epatel की टिप्पणी

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

वास्तविक प्रश्न के लिए, मैं कहूंगा कि एक्सएमएल शायद ठीक है, क्योंकि बहुत से लोगों का उपयोग कॉन्फ़िगरेशन के लिए करने के लिए किया जाएगा। जब तक आप कॉन्फ़िगरेशन मानों को आसानी से उपयोग करने के तरीके में व्यवस्थित करते हैं, तब तक "कोण ब्रैकेट कर" बहुत खराब नहीं होना चाहिए।

0
जोड़ा

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

  1. MacOSX - plists
  2. Win32 - रजिस्ट्री (या यहां पर एक नया है, जब से मैंने इसे विकसित किया)
  3. लिनक्स/यूनिक्स - ~/.apprc (नाम-मूल्य शायद)
0
जोड़ा
सवाल अब "क्रॉस प्लेटफार्म" निर्दिष्ट करता है।
जोड़ा लेखक hippietrail, स्रोत

@Herms

मेरा वास्तव में क्या मतलब था किसी भी दिए गए प्लेटफॉर्म के लिए अनुशंसित तरीके से सॉफ़्टवेयर कॉन्फ़िगरेशन मानों को स्टोर करना चाहिए।

आपको अक्सर जो मिलता है वह भी अनुशंसित तरीकों से संशोधित किया जाना चाहिए। किसी प्रोग्राम में कॉन्फ़िगरेशन मेनू या "सिस्टम प्रीफ़्स" एप्लिकेशन में कॉन्फ़िगरेशन पैनल की तरह (सिस्टम सेवा सॉफ़्टवेयर यानी) के लिए। अंतिम उपयोगकर्ताओं को सीधे RegEdit या NotePad के माध्यम से उन्हें संशोधित करने की अनुमति नहीं दे रहा है ...

क्यूं कर?

  1. अंतिम उपयोगकर्ता (= ग्राहक) का उपयोग उनके प्लेटफ़ॉर्म पर किया जाता है
  2. बैकअप के लिए सिस्टम "सुरक्षित सेटअप" आदि को बेहतर ढंग से सहेज सकता है

@ninesided

" लाइब्रेरी की पसंद " के बारे में, अंतिम उपयोगकर्ता मशीनों पर संस्करण-विवाद-युद्ध में आने का जोखिम कम करने के लिए किसी भी चयनित लाइब्रेरी में (स्थिर लिंक) लिंक करने का प्रयास करें।

0
जोड़ा
इस तरह के लिए तर्क बहुत मजबूत होगा अगर हम कुछ पुस्तकालयों को पा सकते हैं जो विभिन्न कॉन्फ़िगरेशन फ़ाइल स्वरूपों के लिए एक एकीकृत API प्रदान करते हैं।
जोड़ा लेखक hippietrail, स्रोत

वाईएएमएल, सरल कारण के लिए कि यह एक्सएमएल की तुलना में बहुत पठनीय विन्यास फाइलों के लिए बनाता है।

एक्सएमएल:


    Bob
    Abooey
    adv
    555-1212
    
[email protected]
    
[email protected]

YAML:

    babooey:
        computer : cpu1
        firstname: Bob
        lastname: Abooey
        cell: 555-1212
        addresses:
            - address: [email protected]
              password: xxxx
            - address: [email protected]
              password: xxxx

The examples were taken from this page: http://www.kuro5hin.org/story/2004/10/29/14225/062

0
जोड़ा
Kuro5hin उद्धृत लाइन और चार गिनती एक्सएमएल पर वाईएएमएल का उपयोग करने के कारणों के रूप में। मुझे आश्चर्य है कि क्यों वह "सहायक उपकरण और पुस्तकालयों की संख्या" उद्धृत करना भूल गया? वाईएएमएल: 2, एक्सएमएल: 2,000,000।
जोड़ा लेखक Cheeso, स्रोत
याम के पास 2 से अधिक पुस्तकालय हैं। yaml.org
जोड़ा लेखक engtech, स्रोत
मुझे वाईएएमएल पसंद है, और लगभग 12 भाषाओं में तीसरे पक्ष के पुस्तकालयों को yaml.org पर सूचीबद्ध किया गया है। लेकिन डिफ़ॉल्ट भाषा के साथ वाईएएमएल समर्थन वाले जहाजों की एकमात्र भाषा रूबी (1.9.2 के बाद से) प्रतीत होती है। क्या कोई और है? निर्भरता जोड़ना एक परेशानी हो सकती है।
जोड़ा लेखक nealmcb, स्रोत