2012-05-25 2 views
5

जब मुझे अपने एप्लिकेशन में कुछ कैश करने की आवश्यकता होती है, तो मैं Web.Caching.Cache चुनता था। लेकिन मैं कुछ विरासत कोड में भाग गया जो इसके बजाय HttpAplicationState का उपयोग कर रहा है।Web.Caching.Cache की बजाय HttpAplicationState का उपयोग कब करें?

के बाद से Web.Caching.Cache अधिक शक्तिशाली और लचीला है (ज्यादा अधिक लगता है), वहाँ एक स्थिति है कि बेहतर HttpApplicationState उपयोग करने के लिए है ??

मैं बहुत अगर आप :-)

+0

मैं कभी भी एप्लिकेशनस्टेट का उपयोग नहीं करता हूं। मुझे लगता है कि यह विरासत कोड (पुराने एएसपी दिन) – TGH

+0

@TGH http://msdn.microsoft.com/en-us/library/system.web.httpapplicationstate.aspx के लिए अभी भी 4.0 मैन – rhapsodyn

+0

में है हाँ मुझे लगता है कि यह अभी भी है, लेकिन मुझे ऐसा समय याद नहीं है जब मैंने इसका इस्तेमाल किया था। मुझे लगता है कि केवल लाभ मैं के बारे में सोच सकते हैं कि यह समाप्त हो रहा है कभी नहीं .... – TGH

उत्तर

13

मुझे कुछ उदाहरण दिखा सकते हैं की सराहना करते हैं की जाएगी दोनों HttpApplicationState और Web.Caching.Cache जानकारी है कि एक ASP.Net आवेदन भर विश्व स्तर पर पहुँच हो सकता है स्टोर करने के लिए इस्तेमाल किया जा सकता। हालांकि, उनके पास बहुत अलग उपयोग हैं।

HttpApplicationState आवेदन डेटा कि आम तौर पर नहीं बदलता है स्टोर करने के लिए प्रयोग किया जाता है। यह आमतौर पर global.asax में Application_Start में पॉप्युलेट होता है, जब एप्लिकेशन प्रारंभ होता है। मैंने व्यक्तिगत रूप से इसका अधिक उपयोग नहीं किया है, लेकिन मेरा मानना ​​है कि इसका उपयोग आम तौर पर एप्लिकेशन कॉन्फ़िगरेशन के छोटे टुकड़ों को स्टोर करने के लिए किया जाता है जो कि एप्लिकेशन के सभी उपयोगकर्ताओं के लिए वैश्विक हैं और जो या तो बहुत कम नहीं बदलते या बदलते नहीं हैं। ऐप रीसायकल होने तक एप्लिकेशन स्थिति में कुछ भी अनिश्चित काल तक रहेगा। लेकिन जब यह फिर से रीसायकल और पुनरारंभ होता है, तो अनुप्रयोग_स्टेट फिर से निष्पादित हो जाएगा और इसे फिर से पॉप्युलेट करेगा।

यह ध्यान रखें कि एप्लिकेशन स्थिति एक सिंगलटन है और सुरक्षित थ्रेड नहीं है महत्वपूर्ण है। तो जब आप इसमें परिवर्तन करते हैं, तो आपको एप्लिकेशन ऑब्जेक्ट को कॉल के माध्यम से एप्लिकेशन ऑब्जेक्ट को लॉक और अनलॉक करना होगा। लॉक() और एप्लिकेशन। अनलॉक()। पृष्ठ स्तर, आंशिक पेज, और डेटा:

वास्तव में तीन अलग-अलग तरीकों से आप ASP.Net सामग्री को कैश कर सकते हैं। मैं डेटा कैशिंग के बारे में बात करने जा रहा हूं, क्योंकि मुझे लगता है कि यह आपके लिए सबसे प्रासंगिक है। एएसपी.Net कैश का उपयोग बड़ी मात्रा में एप्लिकेशन डेटा को स्टोर करने के लिए किया जाता है जो हर अनुरोध के लिए डेटा स्टोर से पुनर्प्राप्त करने के लिए महंगा होगा .. एप्लीकेशनस्टेट और कैश के बीच महत्वपूर्ण अंतर 1) कैश डेटा को समाप्त होने और स्मृति से शुद्ध करने के लिए डिज़ाइन किया गया है विभिन्न प्रकार के ट्रिगर्स या शर्तों (समय, अन्य कैश निर्भरता, आदि) द्वारा, जबकि एप्लिकेशनस्टेट ऐप रीसायकल तक हमेशा के लिए रहेगा, और 2) यदि सर्वर को गंभीर मेमोरी दबाव का सामना करना पड़ रहा है तो कैश डेटा को स्मृति से शुद्ध किया जा सकता है, और इस प्रकार आप वहां पर कभी भी भरोसा नहीं किया जा सकता है और हमेशा यह देखने के लिए परीक्षण करना चाहिए कि यह मौजूद है या नहीं, जबकि एप्लीकेशनस्टेट हमेशा वहां रहेगा।

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

+0

अब मैं यकीन है कि है कि मैं बजाय HttpApplicationState की कैश इस्तेमाल कर सकते हैं कर रहा हूँ है, आदमी – rhapsodyn

+5

यू धन्यवाद आप .NET 4.0 या आप कर सकते हैं इसके बाद के संस्करण उपयोग कर रहे हैं एक सिस्टम का उपयोग करें। Runtime.Caching.MemoryCache या तो ASP.NET या .NET प्रोजेक्ट में। http://msdn.microsoft.com/en-us/library/dd997357.aspx – bounav

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

  • कोई संबंधित समस्या नहीं^_^