2010-11-17 18 views
5

हम अपने वेब अनुप्रयोगों में से एक को एक सर्वर से वेब फार्म में स्केल करने की प्रक्रिया में हैं। एप्लिकेशन वर्तमान में एप्लिकेशन के संदर्भ डेटा को कैश करने के लिए एचटीपी रनटाइम कैश का उपयोग करता है। डेटा उत्पाद सूची के 'समान' है: जैसा कि डेटा बहुत कम अद्यतन किया जाता हैऐपफ़ैब्रिक कैश 'डिज़ाइन' - व्यक्तिगत आइटम या संग्रह कैशिंग?

  • श्रेणियों (यानी सूची)
  • उत्पादों (यानी सूची)

, हम भी पूर्व की गणना कुछ लुकअप

  • ProductsByCategory (यानी। शब्दकोश)

टी वह संग्रह वर्तमान में पूरे ऑब्जेक्ट्स के रूप में कैश किए गए हैं ... यानी पूरी सूची/शब्दकोश मिलता है और डाल दिया जाता है। आमतौर पर संग्रहों का उपयोग आमतौर पर किया जाता है क्योंकि मुझे आमतौर पर ड्रॉप डाउन सूचियों/सूची बक्से/आदि को पॉप्युलेट करने की आवश्यकता होती है

संदर्भ डेटा को खेतों में सर्वरों में सिंक में रखा जाना चाहिए। दर्ज AppFabric ...

  1. हमारे ऊपर कैशिंग मॉडल अभी भी AppFabric कैशिंग के लिए उपयुक्त है? मेरे द्वारा किए गए उदाहरण पूरे संग्रह के विपरीत कैश में अलग-अलग आइटम डालते हैं (थोक क्षेत्र के लिए 'क्षेत्रों' का उपयोग किया जा रहा है)

  2. संदर्भ रखने के लिए सबसे अच्छा तरीका क्या है डेटा 'एक साथ' अपडेट किया गया ... यानी यदि श्रेणियों को ताज़ा किया जाता है तो मुझे नवीनतम श्रेणियों को प्रतिबिंबित करने के लिए ताज़ा उत्पादों की आवश्यकता होती है।

उत्तर

2

'थोक पुट-प्रकार ऑपरेशन' के लिए समर्थन थोड़ा सा है, उम, इस समय सीमित है (पढ़ें: nonexistent)। लेकिन थोड़ा सा विचार बताता है कि यह संभवतः सही है - यदि आपने कैश पर ऑब्जेक्ट्स का संग्रह फेंक दिया है, तो यह नहीं होगा कि उन्हें सार्थक कुंजी या टैग (जिसमें एक पल में और अधिक) देना है। आप नकली इसे एक विस्तार विधि के साथ नकली कर सकते हैं जिसने ऑब्जेक्ट्स का संग्रह स्वीकार कर लिया है और ऑब्जेक्ट को कैश में रखने के लिए प्रत्येक ऑब्जेक्ट पर नाम या आईडी प्रॉपर्टी देखी है, लेकिन कवर के तहत यह अभी भी ऑब्जेक्ट्स को डालने के लिए उबाल लेगा एक समय में कैश।

कैश से ऑब्जेक्ट्स का एक सेट प्राप्त करने के लिए, हालांकि, GetObjectsInRegion(regionname) विधि के लिए एक और विकल्प है। यदि, उस बिंदु पर जहां ऑब्जेक्ट कैश में डाला जाता है तो आप इसमें एक टैग जोड़ते हैं उदा। किसी उत्पाद के लिए, इसे श्रेणी के साथ टैग करें, बाद में आप GetObjectsByTag विधि के साथ किसी विशेष टैग के लिए सभी ऑब्जेक्ट्स वापस प्राप्त कर सकते हैं। टैग का उपयोग करने के बारे में बड़ी बात (मुझे लगता है) यह है कि आप उनमें से किसी भी संख्या को कैश में किसी ऑब्जेक्ट पर डाल सकते हैं उदा। एक उत्पाद के लिए, आप इसे श्रेणी के साथ टैग कर सकते हैं लेकिन आपूर्तिकर्ता के साथ भी कह सकते हैं, एक मूल्य बैंड। यह आपको अपने कैश किए गए आइटमों से पूछताछ करने में बहुत अधिक लचीलापन देता है - आप किसी भी व्यक्तिगत टैग से पूछ सकते हैं, या आप GetObjectsByAllTags/GetObjectsByAnyTag विधियों के साथ AND/OR क्वेरी कर सकते हैं।

+0

हालांकि टैग में शामिल होने के लिए उपयोगी होने पर, यदि आपको अधिक उन्नत खोजों की आवश्यकता होती है जैसे <<आदि। यदि संग्रह में जोड़ा जा सकता है तो अच्छा रहें AppFabric, और आप आसानी से LINQ के साथ जोड़/हटा/खोज सकते हैं। –

1

इस मुद्दे पर खुद को आया। स्थानीय कैश का उपयोग करें, किसी क्षेत्र में अलग-अलग इकाइयों का उपयोग करें, और क्षेत्र-स्तरीय अधिसूचना कॉलबैक का उपयोग करें

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