2011-11-06 14 views
5

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

मेरा पहला विचार conf निर्देशिका में एक संपत्ति फ़ाइल का उपयोग करना था, लेकिन मैं रनटाइम के दौरान इसे संशोधित करने में सक्षम होना चाहिए। conf निर्देशिका लिखने योग्य है, जो भी तैनाती विकल्प है?

क्या इसके लिए अंतर्निहित विकल्प हैं या क्या कोई बेहतर दृष्टिकोण है?

उत्तर

2

जैसा कि किम स्टीबेल ने कहा था, सामान्य समाधान यह है कि आपके पास पहले से मौजूद एप्लिकेशन का उपयोग करना है, जो कि अधिकांश समय डेटाबेस इंजन है, जो संबंधपरक है या नहीं। ऐसा इसलिए है क्योंकि ज्यादातर समय, उपयोगकर्ता वरीयताएं कुछ अन्य डेटा के बाद आती हैं जहां पहले से ही जारी है।

लेकिन आपके मामले में, ऐसा लगता है कि फ़ाइल सिस्टम आप दृढ़ता इंजन है, और आपको चर्चा की सुविधा के लिए लेन-देन या अत्यधिक अच्छे पढ़ने/लिखने के प्रदर्शन की आवश्यकता नहीं है, इसलिए मैं उस हिस्से को सबसे सरल संभव रखूंगा जब तक कि कुछ अन्य दृढ़ता इंजन की आवश्यकता न हो: मैं केवल कुछ वरीयता प्रारूप (जेएसओएन या एक्सएमएल दिमाग में आता है) में उपयोगकर्ता वरीयता ऑब्जेक्ट को क्रमबद्ध करता हूं और उन्हें फाइल सिस्टम में सहेजता हूं: अब के लिए नरक मैपिंग नहीं, कोई समयपूर्व पसंद नहीं है (और भ्रष्ट होने की संभावना भी^डब्ल्यू अपने पसंदीदा पाठ संपादक के साथ अपने उपयोगकर्ता प्राथमिकता संपादित करें, सीधे सर्वर, हाँ पर;)

कहा जा रहा है, वहाँ स्काला में या जावा पारिस्थितिकी तंत्र से, कि इस काम के लिए अच्छा ढांचे की एक टन है।

एक्सएमएल मैपिंग के लिए, मुझे कोई बात नहीं है स्कैला मूल पुस्तकालय सबसे अच्छा विकल्प है। इसके साथ एक्सएमएल संरचना का उत्पादन करना आसान है, लेकिन एक्सएमएल से स्कैला ऑब्जेक्ट में मैपिंग सबसे भयानक है। एक्सस्ट्रीम (http://x-stream.github.io/) इसके लिए काफी अच्छा है, लेकिन आपको जावा संग्रह का उपयोग करना होगा, या अपना खुद का जोड़ना होगा (और यह 'सबसे सरल' का मेरा विचार नहीं था)।

JSON मैपिंग के लिए, स्कैला में कई वास्तव में अच्छी पुस्तकालय हैं। गूगल और अन्य stackoverflowers अधिक जानकारी के लिए हो सकता है, लेकिन मैं जानता हूँ कि वहाँ कम से कम इन दो:

  • लिफ्ट-JSON (https://github.com/lift/lift/tree/master/framework/lift-base/lift-json/) - मैं प्रयोग किया जाता है कि एक है, और एपीआई कभी कभी मुझे और डॉक करने के लिए अजीब लगता है, भले ही थोड़ा हल्का है, केस वर्ग के लिए स्वचालित deserialization वास्तव में अच्छा है;
  • Jerkson (https://github.com/codahale/jerkson) और काफी सरल होने की सूचना दी है अच्छा

आशा है कि यह मदद करता है,

+0

जब मैपिंग करने के लिए आया, तो वाईएएमएल पहला गेम है जो नाटक के संदर्भ में दिमाग में आया था। Snakeyaml लाइब्रेरी पहले से ही आपके क्लासपाथ पर है ... जैसा कि जीसन लाइब्रेरी करता है। – sdespolit

2

सामान्य समाधान डेटाबेस में सेटिंग्स को स्टोर करना होगा। क्या डेटाबेस का उपयोग न करने का कोई कारण है?

+0

डेटाबेस तालिकाओं मैं सिर्फ एक मुख्य-मान मैपिंग की जरूरत है, तो मैं हालांकि डीबी overkill थे। अगर मैं डीबी का उपयोग करने का फैसला करता हूं, तो मेरे पास एक पंक्ति के साथ एक टेबल हो सकती है। क्या यह आपका सुझाव है? – paradigmatic

+0

आपके प्रश्नों ने यह ध्वनि बनाया है कि आपके पास प्रति उपयोगकर्ता सेटिंग्स का एक सेट है। एप्लिकेशन-व्यापी सेटिंग्स के मामले में कॉन्फ़िगरेशन फ़ाइल का उपयोग करना सामान्य तरीका है। मैं कल्पना नहीं कर सकता कि कॉन्फ़िगरेशन फ़ाइल क्यों लिखने योग्य नहीं होगी ... –

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