कीवर्डहरू -

यस्ता छन् एएसपी डट नेटका सेसन स्टेट मोडहरु

यस्ता छन् एएसपी डट नेटका सेसन स्टेट मोडहरु

CTO at BRAINDIGIT | MVP (Visual Studio and Development Technologies) at Microsoft Most Valuable Professional


परिचय

HTTP प्रोटोकल stateless प्रकृतिको हुनाले हरेक ASP.NET एप्लिकेसनले आफ्ना ग्राहकहरूको session हरूको सूचनालाई व्यवस्था गर्नुपर्ने हुन्छ ।

सूचना समुह र यस्तै मंचहरूमा सोधिइरहने प्रश्न के हो भने ASP.NET को session व्यवस्थापनले कसरी काम गर्छ र ASP.NET को वेब फार्म वा धेरै प्रयोगकर्ता भएको high volume वेब साइट व्यवस्थापन गर्ने कुन प्रविधि सबैभन्दा राम्रो हुन्छ ? यस लेखमा हामी ASP.NET को session व्यवस्थापनका बारे एक छोटो परिचय बाट सुरु गर्नेछौं र त्यसपछि ASP.NET को session व्यवस्थापन internals र अन्तमा केही सिफारिसहरू दिने छौं ।

\"\"

Session-State Modes

ASP.NET session state ले session का डाटा सञ्चय गर्ने विभिन्न प्रकारका सञ्चय विकल्पहरू प्रदान गर्दछ । हरेक विकल्पलाई SessionStateMode enumeration मा एक छुट्टै मूल्यले जनाउँदछ । तल दिइएको सुचिमा विभिन्न session state modes बारे छोटो चर्चा गरिएको छ ।

१. InProc mode: जसले वेब सर्भरको मेमोरीमा session state सञ्चय गर्दछ । यो स्वतः नै रहन्छ ।

२. StateServer mode: जसले session state को सञ्चय एक छुट्टै प्रक्रिया – ASP.NET state   service मा गर्दछ । यसो गर्दा वेब एप्लिकेसन पुनः सञ्चालन गर्दा पनि session state  को सञ्चय भएको हुन्छ अनि एक भन्दा बढि वेव सर्भर वा वेब फार्ममा पनि उपलब्ध हुन्छ ।

३. SQLServer mode ले session state को सञ्चय SQL सर्भर डाटाबेसमा गर्दछ । यसो गर्दा वेब एप्लिकेसन पुनः सञ्चालन गर्दा पनि session state  को सञ्चय भएको हुन्छ अनि एक भन्दा बढि वेव सर्भर वा वेब फार्ममा पनि उपलब्ध हुन्छ ।

४. Custom mode, जसले हामीलाई एक custom storage provider मद्धत गर्दछ ।

५. Off mode, जसले session state लाई disable गरिदिन्छ ।

ASP.NET session state ले कुन मोड प्रयोग गर्ने भन्ने कुरा SessionStateMode enumeration values को एप्लिकेसनको Web.config फाइलमा sessionState element को मोड एट्रिब्युट किटान गरेर गर्न सक्छौं ।

InProc र Off बाहेकका मोडहरूलाई थप पारामिटरहरु जस्तै connection-string value हरूको जरुरत पर्ने देखिन्छ। हाल तोकिएको session state को जानकारीका लागि हामी System.Web.SessionState.HttpSessionState.Mode property मा रहेको मूल्य हेर्न सक्छौं ।

In-Process Mode

In-Process मोड नै } session state मोड को डिफल्ट मोड हो र यसको किटान InProcSessionStateMode को enumeration value द्वारा गरिन्छ ।

यसले state values  र variables लाई स्थानिय वेब सर्भरको मेमोरिमा सञ्चय गर्दछ । यो नै एउटा यस्तो मोड हो जसले Session_OnEnd event लाई मद्धत गर्दछ ।

नोटः यदिे एप्लिकेसनको Web.config फाइलको processModel element मा webGarden एट्रिव्युटलाई true गरि Web-garden mode लाई सञ्चालन गरिएको छ भने InProc सेसन स्टेट मोड को प्रयोग नगर्नुहोला । त्यसो गरेमा डाटाहरू हराउने सम्भावना रहन्छ ।

State Server Mode

State Server Mode ले सेसनको सञ्चय एउटा प्रक्रियामा गर्दछ जसलाई ASP.NET state service  भनिन्छ । यो ASP.NET worker process वा IIS application pool भिन्नै प्रक्रिया हो ।

यसो गर्दा वेब एप्लिकेसन पुनः सञ्चालन गर्दा पनि session state  को सञ्चय भएको हुन्छ अनि एक भन्दा बढि वेव सर्भर वा वेब फार्ममा पनि उपलब्ध हुन्छ ।

StateServer mode को प्रयोग गर्नुभन्दा पहिले ASP.NET स्टेट सर्भर सेसन सञ्चय गर्ने सर्भरमा नै चलिरहेको छ कि छैन भन्ने निश्चित गर्नुपर्दछ । ASP.NET state service को जडान एक सर्भिसका रूपमा ASP.NET  र NET Framework को जडानका क्रममा नै गरिएको हुन्छ । ASP.Net state service तल दिइएका ठाउँमा अवस्थित  हुन्छन् ।

systemroot\\Microsoft.NET\\Framework\\versionNumber\\aspnet_state.exe

एप्लिकेसनको Web.config फाइलमा StateServer mode को प्रयोगका लागि ASP.NET एप्लिकेसनको configuration गर्न तलको प्रक्रिया पुरा गर्नुहोस् ।

१. sessionState element को मोड एट्रिव्युटलाई StateServer मा राख्ने

२. stateConnectionString को एट्रिव्युटलाई tcpip=serverName:42424 मा बदल्ने

नोटः StateServer मोड प्रयोग गरिरहेको बेलामा हाम्रो एप्लिकेसनको सुरक्षा बढाउनका लागि हाम्रो सुझाव ः stateConnectionString value को सुरक्षाका लागि हाम्रो configuration file को sessionState section लाई encrypt गर्ने ।

तल दिइएको उदाहरणमा StateServer मोडको configuration देखाइएको छ जसको session state लाई SampleStateServer नामक remote computer मा सञ्चय गरिएको छ ।
\"\"
नोटः मोडलाई StateServer मा राखेको भएमा सञ्चय गरिएका चिजहरूलाई श्रृङ्खलाबद्ध गर्नु जरुरी हुन्छ ।
वेब फार्ममा StateServer mode को प्रयोग गर्न सो वेब फार्मका सबै एप्लिकेसनका वेब configuration को machineKey element मा एउटै encryption keys लाई किटान गरिएको हुनुपर्दछ ।

SQL Server Mode

SQL Server Mode ले stores session state लाई SQL Server डाटाबेसमा सञ्चित गर्दछ । यसो गर्दा वेब एप्लिकेसन पुनः सञ्चालन गर्दा पनि session state  को सञ्चय भएको हुन्छ अनि एक भन्दा बढि वेव सर्भर वा वेब फार्ममा पनि उपलब्ध हुन्छ ।

नोटः मोडलाइ SQL Server मा राखेको भएमा सञ्चय गरिएका चिजहरूलाई श्रृङ्खलाबद्ध गर्नु जरुरी हुन्छ ।
SQLServer mode को प्रयोगका लागि ASP.NET session state database लाई SQL Server  मा install गरिएको छ,छैन निश्चित गर्नुपर्दछ ।

Aspnet_regsql.exe tool को मद्धतले हामी ASP.NET session state database को install गर्न सक्छौं ।  ASP.NET   को एप्लिकेसनलाई SQLServer mode प्रयोग गर्ने configuration का लागि तलको प्रक्रिया एप्लिकेसनको Web.config फाइलमा पुरा गर्नुहोस् ।

१. sessionState element को मोड एट्रिव्युटलाई SQLServer मा राख्ने

२. sqlConnectionString को एट्रिव्युटलाई आफ्नो SQL Server डाटाबेसको connection string मा राख्ने
नोटः SQLServer मोड प्रयोग गरिरहेको बेलामा हाम्रो एप्लिकेसनको सुरक्षा बढाउनका लागि हाम्रो सुझाव ः sqlConnectionString value को सुरक्षा हामी हाम्रो configuration file को sessionState section लाई encrypt गर्ने ।

तल दिइएको उदाहरणमा SQLServer  मोडको ] configuration देखाइएको छ जसको session state लाई "SampleSqlServer" नामक SQLServer मा सञ्चय गरिएको छः
\"\"
नोटः यदि sessionState element को sqlConnectionString एट्रिव्युट प्रयोग गरेर भरपर्दो connection तपाइँको SQL Server को configuration file  मा किटान गरियो भने, SQL Server को connection SessionStateModule सँग SQL Server integrated security प्रयोग गरि हुँदैन ।

यो सम्बन्ध ASP.NET process identity वा user credentials को प्रयोग गरि बनाइन्छ जुन identity configuration element मा उपलब्ध गराइन्छ । हामीले IIS impersonated identity को प्रयोग गर्न लगाउन पनि सक्छौं ।

यसो गर्नका लागि    गर्ने र sessionState configuration element को useHostingIdentity  एट्रिब्युटलाई ‘false’ मा राख्ने ।

वेब फार्मको SQLServer mode लाई configure गर्नका लागि सबै वेब सर्भरको configuration फाइलमा sessionState element को sqlConnectionString एट्रिव्युटलाई त्यहि SQL Server डाटाबेसमा पर्नेगरी राख्नुहोस् ।

Aspnet_regsql.exe Tool को प्रयोग गरी Session State Database  को Installation गर्नः SQL सर्भरमा session state database लाई install गर्न, वेभ सर्भरको systemroot\\Microsoft.NET\\Framework\\versionNumber folder भित्र रहेको Aspnet_regsql.exe tool लाई run गर्नुहोस । देखिएको command मा दिनुपर्ने मिल्दा सूचनाहरूः

क. -S को प्रयोग गरी, SQL Server instance को नाम

ख. SQL Server मा डेटाबेस बनाउने अनुमति पाएको अकाउन्टको logon credentials हालको प्रयोग कर्ताका लागि -E रोज्नुहोस्, प्रयोग कर्ताको परिचयका लागि -U रोज्नुहोस र पासवर्डका लागि – P रोज्नुहोस् ।

ग. session state database थप गर्नका लागि -ssadd command-line option

SQL Server Express Edition मा session state डेटाबेसको ] installation का लागि हामी Aspnet_regsql.exe tool को प्रयोग गर्न सक्दैनौं । यसका लागि हामीले सबैभन्दा पहिला तल दिइएका T-SQL command हरुको Agent XPs SQL Server option लाई enable गर्नुपर्ने हुन्छ ः

\"\"

SQL Server Express Edition को Agent XPs option लाई disabled  गरिएको अवस्थामा हामीले यि T-SQL commands को प्रयोग गर्न सक्छौं ।

Aspnet_regsql.exe tool ले स्वतः नै ASPState नामक डेटाबेस बनाउँछ जसले SQL सर्भर मोडलाई मद्धत गर्दछ Session data भने tempdb डेटाबेसमा स्वतः नै सञ्चय भएको हुन्छ ।

अतिरित्त रुपमा हामी -sstype option लाई पनि सेसन डेटाको सञ्चय ठेगाना बदल्नका लागि प्रयोग गर्न सक्छौं । सोहि -sstype option मा रहन सक्ने विभिन्न मूल्यहरू तलको तालिकामा स्पस्ट दिइएको छ ः

\"\"

उदाहरणका लागिः तल दिइएको ] command ले SQL सर्भरमा ASPState नामक डेटाबेस बनाउँछ । यस SQL सर्भर instance को नाउँ "SampleSqlServer" राख्दछ र सेसनको डेटा ASPState database मा रहने व्यवस्था मिलाउँछ ।

aspnet_regsql.exe -S SampleSqlServer -E -ssadd -sstype p

Custom Mode
Custom Mode ले तपाईँको डेटा custom session state store provider को प्रयोगले सञ्चय गर्ने इच्छालाई व्यक्त गर्दछ । तपाइँको ASP.NET एप्लिकेसन लाई  Custom Mode राखेर configure गर्दा हामीले session state store provider  पनि जनाउनु पर्ने हुन्छ ।

यसो गर्नका लागि हामी sessionState configuration element मा providers sub-element को प्रयोग गर्न सक्छौं । provider type जनाउँनका लागि हामीले add sub-element को प्रयोग गर्न सक्छौं जसले दुवै type attribute र name attribute हरू उल्लेख गरेको हुन्छ ।

तलको उदाहरणले Web.config file का element हरूलाई देखाएको छ जसले जनाएको छ कि ASP.NET session state ले ASP.NET session state को प्रयोग गर्दछ ।

\"\"

नोटः custom session state store provider ले कुनैपनि सुरक्षित  स्रोत जस्तै SQL Server प्रयोग ASP.NET process identity वा user credentials को प्रयोग गर्न सक्दछ । यसको सट्टामा हामी IIS impersonated identity को प्रयोग गर्ने अनुमति पनि दिन सक्छौं ।

यसका लागि बनाउनुहोस र sessionState configuration element को useHostingIdentity attribute लाई { false तोक्नुहोस ।

ASP.NET सिरिजको अन्तिम लेख हामी आगामी बिहीबार प्रकाशित गर्नेछौं । साथै 'डट नेट गाइड'को डिजिटल कपी खरिद गर्न चाहनु हुन्छ भने यहाँ क्लिक गर्नुहोस् ।