فرض كنید اینگونه نبود و هر كسی میتوانست خرید كند، با این اوصاف امكان خرید بیش از حد و نامعتبر برای سایت شما به وجود میآمد. یعنی یك سری كاربر با هویت غیرواقعی در حجم زیادی از سایت شما خرید میكردند كه این باعث میشد موجودی شما كم شود و دیگر نتوانید جوابگوی تقاضاهای واقعی باشید و مدیریت سایت از دست شما خارج میشد.
اما راهحل این است كه خریداران از نظر شما معتبر باشند. این گونه شما مطمئنا با حجم كمتری تقاضا روبهرو خواهید شد و مدیریت آنها سادهتر از حالت قبلی است. میدانید كه HTTP یك پروتكل State - less است و در هر لحظه نمیتواند به حالت قبلی برگردد. فرض كنید شما وارد سایت شدهاید و مورد اعتبارسنجی نیز قرار گرفتهاید، بعد از این كه به صفحه اصلی رفتید و خواستید خرید كنید، این مساله را كه شما معتبرید یا نه، چگونه میتوان مدیریت كرد؟
بايد زمانی كه لاگین كردهاید، اطلاعات شما در جایی ذخیره شود و در هر بار كه نیاز به این اطلاعات بود به محل ذخيره شده آنها رجوع شود. اما بحث دیگر این كه آیا این اطلاعات باید برای همیشه ذخیره شوند؟ خیر. اگر روزانه ۱۰۰ نفر به سایت شما وارد شوند و اطلاعات آنها در هر بار ورود ۱۰ كيلوبایت باشد، و هر كاربر ۱۰ بار در سایت وارد شود، در آخر شب شما با حجمی برابر ۱۰ x۱۰x ۱۰۰ روبهرو خواهید بود و بعد از مدت ۱۰۰ روز این اطلاعات برابر یك گیگابایت خواهد شد. خب به نظر شما این منطقی است؟ خیر، اما راهحل چیست؟
راهحل این است كه شما اطلاعات هر فرد را به صورت موقت ذخیره كنید. این اطلاعات تا زمانی كه آن فرد در سایت لاگین كرده معتبر است و به محض خروج از سایت، اطلاعات وی پاك میشود.
اما باز هم مشكل وجود دارد. اگر مشتری از سایت خارج نشد، چه اتفاقی میافتد؟ باز اطلاعات ذخیره میشود و هیچ وقت نیز پاك نمیشود؟ در این صورت راهحل این است كه ما 2 شرط بگذاریم یا كاربر خودش از سایت خارج شود یا این كه بعد از مدتی كه ما تعیین میكنیم، اطلاعات به صورت خودكار پاك شده و كاربر در سایت به عنوان یك كاربر غیرمعتبر شناخته شود.
چگونه اطلاعات را ذخیره یا مقادیر آن را بازیابی كنیم؟
اینجاست كه بحث Sessionها مطرح میشود. Sessionها یا همان جلسهها زمانی كه كاربر سایتی را باز میكند برای آن ایجاد میشود و زمانی كه مرورگر خود را ببندد نیز به صورت خودكار از بین میرود. اما Session چیست؟ Session یك ساختار داده Key/Value دارد، یعنی هر عنصر یك شناسه و یك مقدار دارد. مقدار آن هر چیزی میتواند باشد (این مورد به زبان و سكوی نرمافزاری بستگی دارد كه در آن مشغول توسعه وب سایت هستید). متغیر Session به صورت پیشفرض در حافظه ذخیره میشود. اما آیا ذخیره كردن آن در حافظه صحیح است ؟ خیر، چرا كه ممكن است حجم كاربران بیش از حد شود و در آن شرایط ممكن است حافظه سرور امكان نگهداری آنها را نداشته باشد.
اما چارچوب كاری امكان ذخیره سازی مقادیر سشن را در جاهایی جز حافظه سرور به شما میدهند. برای مثال شما میتوانید Session را در پایگاه داده ذخیرهسازی كنید.
اما نمونه استفاده از Sessionها در asp.net. در برنامههایی كه با asp.net توسعه داده میشود، یك فایل است به نام Global.asax . در این فایل 2 رخداد وجود دارد یكی Session_start و دیگری Session_End كه اولی زمانی اتفاق میافتد كه یك سشن آغاز میشود و آخری هنگامی كه Session به پایان میرسد (اطلاعات آن پاك میشود).
در صورتی یك Session تمام میشود كه یا كاربر مرورگر خود را میبندد یا این كه زمان آن به پایان میرسد. در تنظیمات سرور شما میتوانید با مقداردهی session time - out زمان اعتبار یك Session را مشخص كنید.
خواندن و نوشتن در Session به صورت زیر است:
Session[“Username”] = “JameJam”;
Response.Write(Session[“Username”]);
امیر بهاءالدین سبطالشیخ