ASP.NET सेशन प्रबंधन [उदाहरण]
⚡ स्मार्ट सारांश
ASP.NET सेशन मैनेजमेंट एक स्टेटलेस HTTP एप्लिकेशन को अनुरोधों के दौरान उपयोगकर्ता डेटा को याद रखने की सुविधा देता है। यह ViewState, कुंजी-मान युग्मों को संग्रहीत करने के लिए सेशन ऑब्जेक्ट, एक कार्यशील उदाहरण, सेशन स्टेट मोड, टाइमआउट कॉन्फ़िगरेशन और सेशन स्टेट के लाभों के बारे में बताता है।
ASP.NET सत्र प्रबंधन
HTTP प्रोटोकॉल जिस पर सभी वेब एप्लिकेशन काम करते हैं, वह स्टेटलेस प्रोटोकॉल है। स्टेटलेस से इसका मतलब है कि एक अनुरोध से दूसरे अनुरोध तक जानकारी बरकरार नहीं रखी जाती है।
उदाहरण के लिए, यदि आपके पास एक लॉगिन पेज है जिसमें 2 टेक्स्टबॉक्स हैं, एक नाम के लिए और दूसरा पासवर्ड के लिए। जब आप उस पेज पर लॉगिन बटन पर क्लिक करते हैं, तो एप्लिकेशन को यह सुनिश्चित करना होगा कि उपयोगकर्ता नाम और पासवर्ड अगले पेज पर चले जाएँ।
ASP.Net में, यह कई तरीकों से किया जाता है। पहला तरीका ViewState नामक अवधारणा के माध्यम से है। ASP.Net स्वचालित रूप से सभी कंट्रोल्स की सामग्री को स्टोर करता है। यह सुनिश्चित करता है कि यह सामग्री अगले पेज पर भी जाए। यह ViewState नामक प्रॉपर्टी के माध्यम से किया जाता है।
डेवलपर के लिए व्यू स्टेट में कुछ भी बदलना आदर्श नहीं है। ऐसा इसलिए है क्योंकि इसे केवल ASP.Net द्वारा ही नियंत्रित किया जाना चाहिए।
ASP.NET सत्र ऑब्जेक्ट
दूसरा तरीका "सेशन ऑब्जेक्ट" नामक ऑब्जेक्ट का उपयोग करना है। सत्र ऑब्जेक्ट एप्लिकेशन के पूरे जीवनचक्र में उपलब्ध रहता है। आप सत्र ऑब्जेक्ट में किसी भी संख्या में कुंजी-मूल्य जोड़े संग्रहीत कर सकते हैं। इसलिए किसी भी पृष्ठ पर, आप कोड की नीचे दी गई पंक्ति के माध्यम से सत्र ऑब्जेक्ट में मान संग्रहीत कर सकते हैं।
Session["Key"] = value
यह मान को एक सेशन ऑब्जेक्ट में संग्रहीत करता है, और 'की' भाग का उपयोग मान को नाम देने के लिए किया जाता है। इससे बाद में मान को पुनः प्राप्त किया जा सकता है। मान को पुनः प्राप्त करने के लिए, आप नीचे दिए गए कथन का उपयोग कर सकते हैं।
Session["Key"]
ASP.NET सत्र ऑब्जेक्ट उदाहरण
हमारे उदाहरण में, हम पेज पर नाम टेक्स्टबॉक्स फ़ील्ड में दर्ज किए गए नाम को स्टोर करने के लिए सेशन ऑब्जेक्ट का उपयोग करेंगे। फिर हम उस मान को प्राप्त करेंगे और उसे पेज पर प्रदर्शित करेंगे। आइए नीचे दिए गए कोड को Demo.aspx.cs फ़ाइल में जोड़ें।
protected void btnSubmit_Click(object sender, EventArgs e) { Session["Name"] = txtName.Text; Response.Write(Session["Name"]); lblName.Visible = false; txtName.Visible = false; lstLocation.Visible = false; chkC.Visible = false; chkASP.Visible = false; rdMale.Visible = false; rdFemale.Visible = false; btnSubmit.Visible = false; }
Code स्पष्टीकरण: -
- कोड की पहली पंक्ति 'नेम' टेक्स्टबॉक्स कंट्रोल का मान लेती है और उसे सेशन ऑब्जेक्ट में स्टोर करती है। 'सेशन[“नेम”]' कोड निर्दिष्ट करके, हम प्रॉपर्टी को "नेम" नाम दे रहे हैं। प्रॉपर्टी को नाम देने से, बाद में उसे प्राप्त करना आसान हो जाता है।
- कोड की अगली पंक्ति सत्र ऑब्जेक्ट से संग्रहीत मान प्राप्त करती है। फिर यह 'Response.Write' विधि के माध्यम से इस मान को क्लाइंट को वापस लिखती है।
- अंत में, हम फॉर्म पर मौजूद सभी कंट्रोल्स को अदृश्य कर देते हैं। यदि हम ऐसा नहीं करते हैं, तो सभी कंट्रोल्स और हमारे रिस्पॉन्स वैल्यू एक साथ प्रदर्शित होंगे।
उपरोक्त परिवर्तन करने के बाद, आपको निम्नलिखित आउटपुट दिखाई देगा।
आउटपुट:
आउटपुट से, आप देख सकते हैं कि नाम का सत्र मान पुनर्प्राप्त किया गया और ब्राउज़र में प्रदर्शित किया गया।
ASP.NET सेशन स्टेट मोड्स
ASP.NET सत्र डेटा को कई स्थानों पर संग्रहीत कर सकता है, जिन्हें सत्र स्थिति मोड कहा जाता है। आपके द्वारा चुना गया मोड प्रदर्शन, स्केलेबिलिटी और एप्लिकेशन के पुनः आरंभ होने पर डेटा के बने रहने पर प्रभाव डालता है। नीचे दी गई तालिका इनकी तुलना करती है:
| मोड | जहां स्थिति संग्रहीत होती है | के लिए सबसे अच्छा |
|---|---|---|
| इनप्रोक | वेब सर्वर की मेमोरी में (डिफ़ॉल्ट) | सिंगल-सर्वर ऐप्स; सबसे तेज़, लेकिन रीस्टार्ट करने पर डेटा नष्ट हो जाता है |
| स्टेटसर्वर | एक अलग ASP.NET स्टेट सर्विस प्रक्रिया | वेब फ़ार्म; एप्लिकेशन रीस्टार्ट होने पर भी काम करता है |
| एस क्यू एल सर्वर | एक SQL सर्वर डेटाबेस | वेब फ़ार्म जिन्हें टिकाऊ, स्केलेबल स्थिति की आवश्यकता होती है |
| रिवाज | एक कस्टम प्रदाता जिसे आप लागू करते हैं | रेडिस जैसे विशेष स्टोर |
| बंद | सत्र की स्थिति अक्षम | वे एप्लिकेशन जिन्हें सत्रों की आवश्यकता नहीं होती |
InProc डिफ़ॉल्ट और सबसे तेज़ विकल्प है, लेकिन लोड-बैलेंस्ड डिप्लॉयमेंट के लिए, StateServer या SQLServer कई सर्वरों में सेशन उपलब्ध रखता है।
ASP.NET में सेशन टाइमआउट को कैसे कॉन्फ़िगर करें
एक सेशन हमेशा के लिए नहीं रहता; निष्क्रियता की अवधि के बाद यह समाप्त हो जाता है। आप web.config फ़ाइल में sessionState एलिमेंट का उपयोग करके यह टाइमआउट सेट कर सकते हैं, जहाँ टाइमआउट का मान मिनटों में होता है।
<configuration> <system.web> <sessionState mode="InProc" timeout="20" /> </system.web> </configuration>
आप इसे कोड में भी सेट कर सकते हैं। Session.Timeout = 30;डिफ़ॉल्ट टाइमआउट 20 मिनट है। कम टाइमआउट चुनने से सर्वर मेमोरी तेज़ी से खाली होती है और सुरक्षा बेहतर होती है, जबकि ज़्यादा टाइमआउट से उपयोगकर्ता ज़्यादा देर तक लॉग इन रह पाते हैं।
सत्र राज्य के लाभ और हानियाँ
सेशन स्टेट सुविधाजनक है, लेकिन इस पर अत्यधिक निर्भर रहने से पहले आपको इसके कुछ नुकसानों पर विचार करना चाहिए।
लाभ:
- दुकान जैसी प्रति-उपयोगकर्ता जानकारी संग्रहीत करने के लिए उपयोग में आसान।ping कार्ट या लॉगिन विवरण।
- यह केवल स्ट्रिंग ही नहीं, बल्कि जटिल ऑब्जेक्ट भी स्टोर कर सकता है।
- डेटा सर्वर पर रखा जाता है, इसलिए यह क्लाइंट-साइड स्टोरेज की तुलना में अधिक सुरक्षित है।
नुकसान:
- इनप्रोक मोड सर्वर मेमोरी का उपयोग करता है और वेब फ़ार्म में स्केल करने योग्य नहीं है।
- सेशन का समय समाप्त होने या एप्लिकेशन के पुनः आरंभ होने पर (इनप्रोक मोड में) सेशन डेटा नष्ट हो जाता है।
- प्रति उपयोगकर्ता बड़ी मात्रा में डेटा संग्रहीत करने से भारी लोड की स्थिति में प्रदर्शन प्रभावित हो सकता है।



