2009-08-14 10 views
15

संसाधन फ़ाइलें लेबल और संदेशों के स्थानीयकरण के लिए बहुत अच्छी लगती हैं, लेकिन क्या वे सही हैं?क्या संसाधन (.resx) फ़ाइलों के साथ कोई प्रदर्शन समस्या या चेतावनी है?

उदाहरण के लिए:

  1. वहाँ एक बेहतर समाधान संसाधनों की एक बड़ी राशि है, तो है? एक .resx फ़ाइल में 100,000 तारों की तरह? (सैद्धांतिक रूप से, मुझे वास्तव में यह समस्या नहीं है)
  2. क्या यह अन्य प्रकार के डेटा, जैसे छवियों, आइकन, ऑडियो फाइलों, नियमित फाइलों आदि को संग्रहीत करने के लिए एक अच्छी विधि है?
  3. क्या आसान अपडेट/संकलन के लिए स्टैंड-अलोन प्रोजेक्ट में अपनी .resx फ़ाइलों को स्टोर करना सबसे अच्छा अभ्यास है?
  4. क्या कोई अन्य समस्या है जिसे आपने .resx फ़ाइलों का उपयोग करते समय चलाया है?
+0

वह गंध क्या है? – Will

+0

कोई भी नहीं है (अभी तक), लेकिन मैं एक ऐसे प्रोजेक्ट पर काम करने जा रहा हूं जो संसाधन लेबल पर अपने लेबल और संदेशों के स्थानीयकरण के लिए भरोसा करेगी। बस यह सुनिश्चित करना चाहता था कि कोई भी प्रमुख चेतावनी या बेहतर विकल्प न हों। –

+0

यदि मेरे पास हजारों स्ट्रिंग्स भी हैं तो मैं इस जानकारी को संग्रहीत करने के लिए डेटाबेस का उपयोग करूँगा। जब तक मैं हजारों लोगों को मारता हूं, तब तक मैं शायद ही डेटाबेस का उपयोग कर रहा हूं, अकेले सैकड़ों हजारों को छोड़ दें। –

उत्तर

5

  1. यदि संसाधनों की एक बड़ी मात्रा है तो क्या कोई बेहतर समाधान है? एक .resx फ़ाइल में 100,000 तारों की तरह? (सैद्धांतिक रूप से, मुझे वास्तव में यह समस्या नहीं है)

मैंने जावा परियोजनाओं पर वैकल्पिक सामग्री भंडार के रूप में अल्फ्रेस्को का उपयोग किया है। आरईएक्स फाइलें, एक रखरखाव दृष्टिकोण से (मुझे लगता है कि एन्कोडिंग मुद्दों के कारण) वास्तव में बदबू आ सकती है।

  2. क्या यह अन्य प्रकार के डेटा, जैसे छवियों, आइकन, ऑडियो फाइलों, नियमित फाइलों आदि को संग्रहीत करने के लिए एक अच्छी विधि है?

मैंने इसे छवियों के साथ काम देखा है ... लेकिन यह है। (अन्य मीडिया/फाइलों के साथ सुनिश्चित नहीं)

  3. क्या यह आसान अपडेट/संकलन के लिए स्टैंड-अलोन प्रोजेक्ट में अपनी .resx फ़ाइलों को स्टोर करने का सबसे अच्छा अभ्यास है?

मैं नहीं करता, लेकिन आप एक लाइव साइट पर एक resx फ़ाइल संपादित कर सकते हैं और फिर संपादित करेंगे, मुझे विश्वास है। निश्चित रूप से यह विकास में काम करता है (वैश्विक रेक्स को छोड़कर, मुझे लगता है)

  4।क्या कोई अन्य समस्याएं हैं जिन्हें आपने .resx फ़ाइलों का उपयोग करते समय चलाया है?

वास्तव में बनाए रखने के लिए परेशान होने के अलावा, और तथ्य यह है कि दृश्य स्टूडियो उनके साथ काम करने के लिए सबसे अच्छे उपकरण प्रदान नहीं करता है ... नहीं।

0

यहाँ संसाधन फ़ाइलों पर मेरी ले है:

  1. मुझे लगता है कि अगर वहाँ स्ट्रिंग की एक बड़ी राशि है कि एक डेटाबेस का उपयोग करके खोज और की छंटाई के लिए अनुमति देने के लिए सबसे अच्छा तरीका हो सकता है आँकड़े। संसाधन तालिका में एकाधिक भाषाओं के लिए शायद यह बहुत मुश्किल नहीं होगा, और गति सबसे तेज़ होनी चाहिए।

  2. मुझे लगता है कि यह स्थिर संसाधनों को संग्रहित करने के लिए एक अच्छी विधि है, या चीजें जिन्हें ग्राहक द्वारा बदला जा सकता है। गतिशील संसाधनों के लिए, डेटाबेस का उपयोग करना, या तो अकेले या फ़ाइल सिस्टम के संयोजन के साथ बेहतर हो सकता है। मुझे लगता है कि नए SQL सर्वर में एक नया प्रकार है जो डेटाबेस और फ़ाइल सिस्टम का उपयोग करने का इष्टतम संकर है।

  3. मैंने एक अन्य प्रश्न में पढ़ा है (पता नहीं कौन) बाहरी परियोजना में संसाधन फ़ाइलों का उपयोग करना एक अच्छा अभ्यास है, क्योंकि संसाधनों में बदलाव होने पर आपको एक पूरी परियोजना को फिर से कंपाइल करना नहीं होगा। बस संसाधन परियोजना recompile। यह ग्राहकों द्वारा (काफी) आसान संपादन करने की अनुमति भी देगा, जहां उन्हें केवल संसाधन प्रोजेक्ट के लिए "स्रोत कोड" की आवश्यकता होगी, न कि आपके अन्य वास्तविक कोड (एपीआई कोड, आदि)।

  4. मैंने अपनी विश्वसनीयता, विस्तारशीलता या उनके साथ काम करते समय आपके पास होने वाली किसी भी संभावित समस्या के बारे में कोई दावा करने के लिए पर्याप्त संसाधन फ़ाइलों का उपयोग नहीं किया है।

1

बिंदु # 4 के लिए।
मैं हमारी साइट पर सभी तारों के लिए .resx फ़ाइलों का उपयोग कर रहा हूं जिसे कई भाषाओं में स्थानीयकृत किया जाना चाहिए और उनके साथ कोई बड़ा समस्या नहीं है।

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

1

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

जब हमने पहली बार एक उदाहरण की तलाश की तो हमें Creating a Data Driven ASP.NET Localization Resource Provider and Editor मिला।

+0

आप इन गैर-बदलते संसाधनों को डेटाबेस में क्यों स्टोर करना चाहते हैं? यह काफी जल्द ही स्केलेबिलिटी समस्याओं में भाग लेने के लिए एक शानदार तरीका प्रतीत होता है। – UpTheCreek

+0

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

2

स्ट्रिंग लुकअप की गति के बजाय अनुवादकों (लोगों) के प्रदर्शन के बारे में संसाधन फ़ाइलों के साथ मुझे दो समस्याएं हुई हैं।

देखरेख कार्यालय कि अनुवादकों किया संपादन एक्सएमएल या किसी नया उपकरण सीखने के साथ सामना नहीं कर सका पर बिक्री स्टाफ।

तो उन्होंने अनुवादों को संपादित करने के लिए एक्सेल का उपयोग किया। इसलिए, हम अनुवादित तारों को एक सीवीएस फ़ाइल के रूप में भी संग्रहीत कर सकते हैं, इसलिए संसाधन फ़ाइलों में अनुवादित तारों की प्रतिलिपि बनाने से बचें।

एक नया निर्माण करने की आवश्यकता है ताकि किसी भी अनुवाद के प्रभाव की आवश्यकता हो।

एक बार फिर अनुवादित स्ट्रिंग को CSV फ़ाइल के रूप में संग्रहीत किया गया था, तो हम उन्हें एएसपी.NET कैश में कैश कर सकते थे। फिर अनुवाद में कोई भी परिवर्तन अगले पृष्ठ लोड पर दिखाई देगा।


तो हम संसाधन प्रदाता के कस्टम कार्यान्वयन का उपयोग कर सकते थे और मानक एएसपी.नेट संसाधन लुकअप सिस्टम को रख सकते थे। या केवल मानक संसाधन लुकअप सिस्टम को अनदेखा करें यदि यह आपके मामले में मदद नहीं करता है - यह इस बात पर निर्भर करता है कि आपके पृष्ठ कैसे लिखे गए हैं।


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

+0

मुझे लगता है कि बाहरी .resx संपादक उपकरण है ... –

+0

@SkippyFire, "बाहरी .resx संपादक उपकरण" के साथ समस्या यह है कि एक अनुवादक को यह सीखना है कि इसका उपयोग कैसे किया जाए। –

+1

दोस्त, resgen उपकरण resx को key = value text फ़ाइलों में परिवर्तित कर सकता है जो अनुवादकों के उपयोग के लिए तुच्छ हैं। फिर आप key = value फ़ाइलों को वापस xml resx फ़ाइलों में बदलने के लिए resgen का उपयोग कर सकते हैं। –

3

हम अपेक्षाकृत बड़े .NET विंडोज फॉर्म एप्लिकेशन (500 से अधिक विभिन्न रूपों, लगभग 20 संसाधन स्ट्रिंग प्रति फॉर्म) पर संसाधन फ़ाइलों का उपयोग कर रहे हैं और हमारे पास .resx फ़ाइलों से संसाधनों के संबंध में कोई प्रदर्शन समस्या नहीं है। हमने अनुवाद प्रबंधन के लिए एक उपकरण के रूप में Babylon.NET का उपयोग किया है (केवल अनुवादकों के लिए एक निःशुल्क संस्करण है)। आपने यह निर्दिष्ट नहीं किया है कि आपकी परियोजना वेब या डेस्कटॉप एप्लिकेशन होगी या नहीं। डेस्कटॉप अनुप्रयोगों के लिए संसाधन फाइलें प्रदान करने वाली एक कार्यक्षमता नियंत्रण स्थिति और आकार को स्थानीयकृत करने की क्षमता है जो अन्य उपकरणों का उपयोग करके IMHO संभव नहीं है (जब तक कि आप DevExpress लेआउट नियंत्रण जैसे कुछ का उपयोग नहीं कर रहे हैं, जिसमें स्वचालित आकार है)।

4

मैंने हाल ही में 5 मिलियन तारों (सामान्य लंबाई, इस वाक्य की तरह) के साथ एक .resx फ़ाइल का उपयोग किया है, जो विभिन्न डीएलएलएस में संकलित 1   जीबी आकार में है। यह अभी भी एक Azure वेब प्रोजेक्ट में ठीक काम करता है।

लोड समय अज्ञात है, शायद कुछ सेकंड या तो, क्योंकि यह हमेशा चरणों में गर्म हो सकता है, मैंने इसे कभी नहीं देखा।

+0

प्रतिक्रिया के लिए धन्यवाद। सफलता की कहानियां सुनना हमेशा अच्छा होता है। –

+0

मैं इसे अनुशंसा नहीं करता, बेवकूफ समाधान, तैनाती के लिए लंबा ले लो। मुझे लगता है कि अंततः वे इसे एज़ूर टेबल स्टोरेज में ले जाएंगे। लेकिन यह बड़े res फ़ाइल कार्यों को मंजूरी देता है। –

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