سلام
.gif)
نگاه کنید شما سایت گوگل رو در نظر بگیرید ، در این سایت در هر لحظه میلیونها نفر به پنل خود لوگین و دست به تغییرات میزنند، خوب اگر ما بخواهیم برای هر کاربر یک سشن ایجاد کنیم یقینا هر چقدر که سرورمون گردن کلفت باشه باز هم کم میاره برای همین است که در برنامه های استاندارد شده دات نت برای اینکه بتونن از مشکلات این بار اضافی جلوگیری کنند اولن به کل با استفاده از فایل کانفیگ استفاده از سشن رو غیر فعال میکنند و تنها در جاهایی که لازم است در همان صفحه استفاده از اونو مجاز میکنند و دوما (اصلی ترین کار) از دستورات treading استفاده مینمایند تا این بار محاسباتی رو بین تمام منابع سیستم تقسم کنند (به ایمیل گوگل وقتی وصل میشدید بعد از فشار دادن دکمه مربوطه به آدرس بار نگاهی بندازید، حتما با نوشته هایی مثل tread و redirect بر میخورید) و این جوری سرعت پاسخگویی بالا میرود.
حالا چه جوری بدون استفاده از سشنها بفهمیم که کدوم کاربر در صفحه است، برای این کار چندین راه وجود داره که در زیر عمومی ترینهاشو براتون یه توضیح مختصری میدم و راه های استاندارد شده و حرفه ایشم که یقینا اینجا جای بحثش نیست:
1- وقتی کاربر لوگین کرد در صورت معتبر بودن فقط آدی کاربر (هر چیزی میتونه باشه فقط باید در دیتابیس به صورت یک کلید (از هر نوعش بستگی به منطق دیتابیس شما داره) شناخته شده باشه) رو توی یک متغییر میریزیم بعد برای هر دکمه ای که قراره ما کاربر رو به صفحه ای ارجاء بده با استفاده از Query String اون متغیرمون رو به صفحه مربوطه بفرستیم و در صفحه مربطه هم باید بر اساس اون متغیر اومده دستورات لازم رو اعمال کنیم.
2-در دیتابیس برای هر کاربر جدولی درست کنیم تا بشه توش مقادیری مانند وضعیت کاربری هر کاربر رو ثبت کرد بعد توی همون دیتابیس (sql 2005) بر طبق منطق لازم دست به ایجاد Stored Procedure (روالهای ذخیر شده معنی فارسیشه) بزنیم به طوری که اگر اون رویه ایجاد شد به ما نتیجه مورد نظرمون رو بده ، بعد تنها کافی است که از این Stored Procedure های ایجاد شده تنها با فراخوانی آنها کاربرمون رو در هر صفحه مدیریت کنیم.
همان طور که فهمیدید برای استفاده از این راه باید دارای منطق برنامه نویسی قوی داشته باشید و هر حرکت کاربر رو پیش بینی کنید.
3- اگر ما بیایم راه های اول و دوم رو با هم به صورت ترکیبی استفاده و تنکش هم یه خورده از کوکی ها استفاده کنیم دقیقا میشه همون چیزی که اکثر برنامه های تحت وب ازش استفاده میکنند از جمله همین vBulletin
(تست کنید وارد پنل خود در انجمن شده و بعد از ورود اتصال خود را به اینترنت قطع کرده و دوباره اتصال بیابید میبینید که هنوز انجمن شما رو به عنوان یک کاربر معتبر میشناشه!)
در کل ما در بالا در حقیقت به مدیریت نقشها به صورت ضمنی پرداخته ایم، اگر چه این کارها شاید طاقت فرسا و سخت جلوه کند اما نتیجه آن بسار دلنشین خواهد بود. در ضمن اصول گفته شده در همه زبانهای برنامه نویسی از دات نت گرفته تا پی اچ پی ، پریل و زبانهای نه چندان شناخته شده دیگه قابل اجراست و تنها فرقشون در تعداد خط کدی که باید فکر کنید و بنویسیده .
البته بگما در C#.net 2 این کارا تا حد بسیار زیادی از قبل برای استفاده راحت تر شما نوشه شده است که این خود یکی از برتریهای دات نت در قبال زبوهای بی قاعده ای مثل پی اچ پی است که فهماندن یک شی بهش N دقیقه وقت لازمه
امید وارم فهمیده باشد، هر چند که مطالب ذکر شده خیلی تازه نیستند
.gif)