2011-03-31 3 views
5

मैं पढ़ा है कि आप एक सत्र चर में सीधे वर्गों स्टोर कर सकते हैं अर्थातएएसपी.नेट - सत्र चर में कक्षाएं संग्रह - यह कैसे काम करता है (स्मृति)?

Session["var"] = myclass; 

मेरे सवाल यह है कि स्मृति प्रबंधन काम करता है। क्या यह क्लाइंट साइड पर सत्र में स्वचालित रूप से इसे क्रमबद्ध करता है?

या क्या यह सर्वर मेमोरी में कक्षा के उदाहरण के लिए डेटा रखता है, और सत्र ऑब्जेक्ट में केवल एक संदर्भ रखता है?

+1

सत्र के पास ग्राहक के साथ कुछ लेना देना नहीं है। – SLaks

उत्तर

12

एएसपी.Net सर्वर पर स्मृति में static नेस्टेड शब्दकोश में आपके ऑब्जेक्ट को संग्रहीत करेगा।
फिर यह क्लाइंट को सत्र आईडी के साथ एक कुकी भेजता है।

अगली बार जब ग्राहक अनुरोध भेजता है, तो एएसपी.Net बाहरी शब्दकोश से उस आईडी से जुड़े सत्र को पुनर्प्राप्त करेगा, फिर आपको उस सत्र में ऑब्जेक्ट युक्त आंतरिक शब्दकोष देगा।

(इस तरह डिफ़ॉल्ट सत्र प्रदाता काम करता है, अन्य प्रदाताओं एसक्यूएल सर्वर के लिए वस्तुओं को क्रमानुसार कर सकते हैं, या फिर पूरी तरह से कुछ करना)

+1

वास्तव में यह डिफ़ॉल्ट सत्र स्टोर प्रदाता का उपयोग करते समय केवल सत्य है, आप सत्र डेटा को वर्कर डेटा प्रक्रियाओं या यहां तक ​​कि मशीनों में साझा करने के लिए SQL सर्वर का उपयोग भी कर सकते हैं। – ntziolis

+0

हां; यह एक और अधिक उन्नत सुविधा है। – SLaks

5

आप कक्षाओं में कक्षाओं को स्टोर नहीं करते हैं लेकिन इन वर्गों के उदाहरण हैं। और हाँ डिफ़ॉल्ट सत्र स्टोर स्मृति है। आप एसक्यूएल सर्वर को सत्र स्टोर के रूप में भी उपयोग कर सकते हैं। फिर कुछ क्रमिकरण होगा।

सत्र डेटा क्लाइंट पक्ष पर उपलब्ध नहीं है।

1

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

ऑब्जेक्ट क्लाइंट को कभी नहीं भेजा जाता है क्योंकि क्लाइंट में केवल कुकी होती है, और कुकीज बहुत कुछ पकड़ने के लिए बहुत छोटी हैं, और क्लाइंट को ऑब्जेक्ट भेजने के अलावा एक सुरक्षा समस्या है।

आप ASP.NET सत्र स्टोर करने के लिए स्मृति के बजाय एक डेटाबेस का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं, कि डिफ़ॉल्ट सत्र की दुकान स्मृति में है विस्तृत here

1

है। उपयोग करने के लिए सबसे आसान कौन सा है क्योंकि ऑब्जेक्ट्स को क्रमशः क्रमबद्ध करने की आवश्यकता नहीं है।

यदि आपने सत्र स्टोर को SQL सर्वर सर्वर कहने के लिए बदल दिया है। फिर सत्र में आपके द्वारा संग्रहीत सभी ऑब्जेक्ट्स को क्रमबद्ध करने की आवश्यकता होगी या अन्यथा वे अपवाद फेंक देंगे।

डिफ़ॉल्ट रूप से आपका सत्र केवल 20 मिनट तक रहता है। जब तक आप चाहें तब तक आप web.config में इसे बदल सकते हैं। लेकिन उस समय के बाद, कचरा संग्रह इसे स्मृति से हटा देगा।

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