بررسی Session State و کاربردهای آن
چهارشنبه 24 خرداد 1391 7:07 PM
نویسنده : | www.srco.ir | 86.10.13 | 806 بار مشاهده |
نكته آخر در ارتباط با معماری فوق نحوه پيگيری كوكی از يك درخواست به درخواست ديگر است . برای اين كه session state به درستی كار كند ، سرويس گيرنده می بايست شناسه session خود را همراه با هر درخواست ارائه نمايد . بدين منظور از دو روش مختلف استفاده می گردد .
•
استفاده از كوكی :در اين حالت ، شناسه session از طريق يك كوكی خاص (ASP.NET_SessionId) كه ASP.NET بطور اتوماتيك و در زمان استفاده از مجموعه session آن را ايجاد می نمايد ، ارسال می گردد . گزينه فوق به صورت پيش فرض انتخاب می گردد و مشابه رويكردی است كه از آن در نسخه های اوليه ASP استفاده می گرديد .
•
استفاده از URLs اصلاح شده :در اين حالت ، شناسه session از طريق يك URL اصلاح شده خاص ارسال می گردد . گزينه فوق يك ويژگی جديد در ASP.NET است و به پياده كنندگان اجازه می دهد در مواردی كه سرويس گيرنده از كوكی حمايت نمی نمايد ، از session state در برنامه های وب استفاده نمايند .
با استفاده از كلاس System.Web.SessionState.HttpSessionState كه در يك صفحه ASP.NET به عنوان شی session از قبل تعبيه شده پيش بينی شده است ، می توان با session state ارتباط برقرار كرد . نحوه اضافه كردن و بازيابی داده در مجموعه session state همانند view state است .
مثلا" می توان يك Dataset را در session قرار داد . كد زير نحوه انجام اين كار را نشان می دهد .
كد زير نحوه بازيابی و تبديل داده ذخيره شده در session را نشان می دهد .
امكان دستيابی به session state در تمامی برنامه و برای كاربر جاری امكان پذير است . session state به دلايل متعددی ممكن است از بين رود :
• بستن و فعال كردن مجدد مرورگر توسط كاربر
• دستيابی به صفحه مشابه از طريق يك پنجره جداگانه مرورگر توسط كاربر
• اتمام تاريخ اعتبار session به دليل عدم فعاليت كاربر در يك بازه زمانی خاص ( مقدار پيش فرض 20 دقيقه )
• خاتمه دادن به عمر مفيد يك session از طريق كد و توسط برنامه نويس ( استفاده از متد Session.Abandon)
در دو مورد اول ، session همچنان در حافظه باقی خواهد ماند چراكه سرويس دهنده وب از بستن مرورگر و يا تغيير پنجره توسط كاربر آگاهی ندارد . در چنين مواردی ، session آخرين لحظات عمر خود را در حافظه طی می نمايد و عملا" غيرقابل دسترس باقی می ماند تا زمانی كه عمر آن به اتمام رسد .
علاوه بر موارد فوق ، زمانی كه application domain مجددا" ايجاد گردد ، session state حذف خواهد شد . فرآيند فوق در زمان بهنگام سازی برنامه و يا تغيير در تنظيمات پيكربندی انجام می شود .
همچنين به منظور حصول اطمينان از صحت عملكرد برنامه ، application domain بطور ادواری بازسازی می شود . در صورتی كه رويكرد فوق باعث بروز مسائلی می گردد ، می توان اطلاعات session state را به صورت out of process ذخيره كرد ( در بخش بعد در اين رابطه توضيح خواهيم داد ) . در مدل نگهداری state به صورت out-of-process ، اطلاعات session حتی با غيرفعال شدن application domain همچنان باقی خواهند ماند .
جدول 1 ، متدها و خصلت های مختلف كلاس HttpSessionState را نشان می دهد .
عملكرد
|
member
|
تعداد آيتم های ذخيره شده در مجموعه session جاری را مشخص می كند .
|
Count
|
مشخص می نمايد كه پيگيری session از طريق يك كوكی و يا يك URLs اصلاح شده انجام می گيرد.
|
IsCookielessSession
|
مشخص می نمايد كه آيا session برای درخواست جاری ايجاد شده است . در صورتی كه session state حاوی داده نباشد ، ASP.NET خود را درگير پيگيری آن و يا ايجاد يك كوكی برای آن نمی نمايد. در مقابل ، session با هر درخواست مجددا" ايجاد می گردد .
|
IsNewSession
|
نحوه ذخيره سازی اطلاعات session state توسط ASP.NET را تشريح می نمايد . مد ذخيره سازی بر اساس تنظيمات انجام شده در web.config مشخص می گردد .
|
Mode
|
يك رشته به همراه شناسه منحصربفرد session را برای سرويس گيرنده جاری ارائه می نمايد .
|
SessionID
|
يك مجموعه فقط خواندنی از آيتم های session كه توسط تگ های <object runat=server> در فايل global.asax تعريف شده است را ارائه می نمايد . معمولا" از اين روش استفاده نمی گردد و صرفا" پتانسيلی است در جهت سازگاری با برنامه نويسی ASP است .
|
StaticObjects
|
مدت زمانی را كه پس از سپری شدن آن امكان حذف session جاری وجود دارد ، مشخص می نمايد . در بازه زمانی فوق نبايد درخواستی از سرويس گيرنده دريافت شده باشد . مقدار پارامتر فوق را می توان از طريق برنامه تغيير داد تا زمينه استفاده از يك session با طول عمر بيشتر برای عمليات مهم تر فراهم گردد .
|
Timeout
|
متد فوق session جاری را حذف و تمامی حافظه اشغال شده توسط session را آزاد می نمايد . بدين منظور می توان از يك صفحه log off استفاده كرد تا اين اطمينان حاصل شود كه حافظه سرويس دهنده در اسرع وقت و به سرعت آزاد می گردد
|
Abandon
|
متد فوق تمامی آيتم های session را حذف می نمايد ولی شناسه session جاری را تغيير نمی دهد
|
Clear |
کریمی که جهان پاینده دارد تواند حجتی را زنده دارد
دانلود پروژه و کارآموزی و کارافرینی