PDA

View Full Version : کاربرد , دلایل و نحوه ی استفاده از سشن ها



aghayex
یک شنبه 14 مهر 1392, 20:27 عصر
با سلام
من در حال بازنویسی یه برنامه هستم که با asp نوشتنش و در اون از سشن ها به کرات استفاده شده حالا می خوام اونو با سیلورلایت با میزبانی asp.net بازنویسی کنم آیا نیاز هست که من از این روش تبعیت کنم و یا اصلا سشن ها چه کاربردی دارن؟

aghayex
پنج شنبه 18 مهر 1392, 16:18 عصر
بسم الله . چرا یکی جوابه ما رو نمیده یعنی واقعا کسی تا حالا در این مورد کار نکرده:متفکر:

fakhravari
پنج شنبه 18 مهر 1392, 17:31 عصر
کاربرد شئ Session و نحوه تعريف و بکارگيری متغير در آن
از شئ Session برای ذخيره و تغيير تنظيمات مربوط به يك جلسه كاری كاربر استفاده می شود. متغيرهای ذخيره شده در شئ فوق صرفا اطلاعات مربوط به يك كاربر را ذخيره كرده و در تمامی صفحات مربوطه به يك برنامه قابل دستيابی هستند.

زمانيكه با يك برنامه كار می كنيد، آن را فعال كرده ( Open ) و پس از بهره برداری از پتانسيل های آن در صورت لزوم تغييرات لازم را انجام و در نهايت برنامه را غيرفعال ( Close ) می كنيد. فرآيند فوق يك جلسه كاری با نرم افزار مورد نظر را نشان می دهد. در چنين حالتی كامپيوتر، شما را كاملا می شناسد، او می داند كه شما چه زمانی برنامه را شروع و در چه زمانی به اجرای آن خاتمه داده ايد.

در رابطه با برنامه هائی كه بر روی اينترنت اجراء می شوند، به يك مشكل خاص برخورد خواهيم كرد: سرويس دهنده وب نه شما را می شناسد و نه می داند كه چه كارهائی كرده ايد، علت اين امر در نحوه رفتار پروتكلی است كه بعنوان استاندارد دريافت و ارسال بين سرويس گيرنده وب ( مرورگرها ) و سرويس دهنده وب ايفای وظيفه می كند ( پروتكل HTTP ). پروتكل فوق Stateless است يعنی وضعيت قبلی را نگهداری نمی كند (دارای بيماری فراموشی است!).

ASP، با امكان ايجاد يك کوکی (Cookie) منحصربفرد برای هر كاربر توانسته است راهكاری شايسته برای اين مشكل ارائه نمايد. کوکی فوق برای هر سرويس گيرنده ارسال می گردد و شامل اطلاعاتی است كه هويت اينترنتی كاربر را شناسائی و معرفی می نمايد. واسط فوق شئ Session ناميده می شود.

در شئ فوق اطلاعات رايجی نظير name، id، و ذخيره می گردد. سرويس دهنده برای هر كاربر جديد يك شئ Session ايجاد کرده و پس از اتمام تاريخ مصرف تعيين شده برای آن، از بين خواهد رفت . قطعا در ذهن خواننده اين سوال پيش آمده كه اين شئ چه زمانی آغاز و تحت چه شرايطی ايجاد ميگردد؟


شئ فوق تحت شرايط زير آغاز می گردد:
• كاربر جديدی درخواست يك فايل ASP را داشته باشد و فايل Global.asa شامل يك روتين Session_OnStart باشد.
• كاربری مقداری را در متغير Session ذخيره كرده باشد.
• كاربری درخواست يك فايل ASP را داشته باشد و فايل Global.asa از تگ استفاده كرده باشد.

چه زمانی يك Session خاتمه می بايد؟ در صورتيكه يك كاربر برای مدت زمان مشخصی در خواست يك صفحه را نداشته و يا آن را بازخوانی مجدد ( refresh) ننمايد، Session خاتمه می يابد. مدت زمان پيش فرض برای درخواست و يا بازخونی مجدد يك صفحه بيست دقيقه است . با استفاده از صفت Timeout می توان مقدار تعيين شده فوق را كاهش و يا افزايش داد. مثال زير نحوه تغيير اين مقدار را به ده دقيقه نشان ميدهد.
Session.Timeout = 5


بمنظور خاتمه دادن به يك Session می توان از متد Abandon بصورت زير استفاده كرد.

Session.Abandon



مهمترين مسئله در رابطه با Session ، زمانی مطرح می گردد كه آنها می بايست متوقف گردند. ما هيچگونه اطلاعی از اين موضوع نداريم كه آيا آخرين درخواست كاربر بصورت نهائی قطعی شده است يا خير؟ ما بر روی سرويس دهنده نمی دانيم كه تا چه زمانی می بايست Session را بصورت فعال نگهداری نمائيم. در صورتيكه اين زمان به درازا بكشد، منابع موجود بر روی سرويس دهنده معطل شده و استفاده بهينه از آنان جای ترديد خواهد داشت و در صورتيكه بسرعت Session را از روی سرويس دهنده حذف نمائيم، اين نگرانی وجود خواهد داشت كه كاربر پس از مدت زمان كوتاهی مجددا به سرويس دهنده متصل و عملا ما بر روی سرويس دهنده اطلاعات وی را نخواهيم داشت. در چنين حالتی كاربر مجبور خواهد بود كه همه چيز را از نو آغاز نمائد. بهرحال پيداكردن و تنظيم مقدار مناسب برای Timeout يك مسئله مهم و در عين حال مشكل است .

http://www.srco.ir/Articles/DocView.asp?ID=542

aghayex
پنج شنبه 18 مهر 1392, 22:02 عصر
تشکر
این برنامه که من می خوام بازنویسیش کنم تحت یک شبکه بسته ( داخلی هست ) و حالا با توجه به اینکه من می خوام با سیلورلایت با میزبانی asp بنویسمش آیا نیاز هست که برای مدیریت کاربرها از این روش استفاده کنم . یا به عبارت دیگه راه کار اصولی دیگه ای هست ؟

fakhravari
یک شنبه 21 مهر 1392, 19:04 عصر
مشکل خاصی نیست. امن است