مشکل اصلی تمامی برنامه های وب
تمامی برنامه هایی که در محیط وب نوشته می شوند به طور ذاتی stateless می باشند، به این معنی که بعد از اینکه یک صفحه در سمت سرور برای کلاینت ایجاد گردید دیگر هیچ گونه اطلاعاتی از آن صفحه بر روی سرور باقی نمی ماند و هنگامیکه کاربر صفحه را Submit می کند شما مجبورید تمامی اطلاعات را از ابتدا بارگذاری کرده و صفحه را ایجاد نمایید.
ASP.Net برای حل این مشکل راه حل های متفاوتی ارائه نموده است:
-
Viewstate
-
Session Variables
-
Application Variables
-
Cache
-
Cookies
سوالی که در اینجا مطرح می شود این است که چه زمانی از چه راه حلی استفاده نماییم؟
۱- Viewstate
Viewstate یک فیلد اطلاعاتی مخفی در داخل صفحات ASP.Net است که اطلاعات تمامی کنترل های بر روی صفحه که خاصیت “EnableViewstate” آنها True می باشد را شامل می شود.
شما همچنین می توانید اطلاعات خاصی را مانند زیر به Viewstate صفحه خود اضافه نمایید:
Viewstate.Add( “TotalStudents”, “87″ );
توجه داشته باشید که اطلاعات Viewstate فقط در داخل یک صفحه قابل دسترسی می باشد و زمانی از آن بهتر است استفاده شود که رفت و برگشت های متعددی در داخل یک صفحه داشته باشیم.
به دلیل اینکه Viewstate ها در زمان ایجاد صفحه به کد تولید شده اضافه می شوند، حجم صفحات تولید شده را در زمان انتقال به کلایت افزایش می دهند، پس بهتر است در زمانهایی که با محدودیت bandwidth رو به رو هستیم (مانند اتصال Dialup) در استفاده از Viewstate ها دقت نماییم.
۲- Session Variables
بیشتر برنامه نویس ها علاقه زیادی به استفاده از Session Variable ها دارند و Session Variable ها بسیار پر کاربرد می باشند.
هنگامی که کاربر از یک سایت دیدن می کند یک Session برای او باز می گردد و این Session زمانی از بین می رود که کاربر سایت را ترک کند یا برای مدت مشخصی Idle گردد. توجه گردد اطلاعات Session بین کاربران به اشتراک گذاشته نمی شود.
Session Variable ها بهتر است در زمان هایی استفاده گردند که اطلاعات خاصی لازم است در تمامی صفحات به اشتراک گذاشته شود و این اطلاعات را باید توان در صفحات مختلف ذحیره و یا به روز کرد.
Session Variables ها از حافظه رم سرور استفاده می کنند پس بهتر است در زمان هایی که سایت شما بازدید کننده های بسیار دارد در استفاده از آنها دقت شود و اطلاعات حجیم را در آنها نگهداری نکنید.
۳- Application Variables
Application Variables ها اطلاعاتی می باشد که در میان تمامی کاربرانی که از یک سایت دیدن می کنند به اشتراک گذاشته می شود.
Application Variables ها را می توان به عنوان جانشینی برای Static Variable ها در محیط Stateless وب دانست. پس بهتر است فقط اطلاعاتی را که لازم ااست بین تمامی کاربران به اشتراک گذاشته شود در آنها قرار داد و به مجرد اینکه نیازی به آنها نبود آنها را از بین برد.
۴- Cache
شاید بتوان گفت Cache از کمترین درجه اهمیت در ASP.Net بر خوردار است.
Cache را می توان به منبعی برای نگهداری حالت های اشیائی مانند Pages, Controls تشبیه کرد. که نیاز به تولید مجدد آنها نمی باشد (یا پس از یکبار تولید آنها تغییری در آنها ایجاد نمی شود) و همیشه ساختار و شکل یکسانی دارند و به صورت مداوم از آنها استفاده می شود.
۵- Cookies
Cookie ها اطلاعاتی می باشند که بر خلاف بقیه مدل ها بر روی Browser کاربر برای استفاده در آینده نگهداری می شوند.
بیشتر مواقع ازCookie ها در سایت های پریا برای شاناسایی خودکار کاربر و بازیابی اطلاعات و تنظیمات خاص آن کاربر استفاده می شود، مانند ورود خودکار (Automatic Login) به یک وب سایت.
به دلیل اینکه Cookie ها در سمت کاربر نگهداری می شوند ممکن است از نظر امنیتی دچار مشکل شوند و توسط Browser هک شوند. پس بهتر است اطلاعات مهم را در داخل Cookie ها ذخیره نکنیم.
در انتها بهتر است موارد زیر را در نظر بگیریم:
ViewState همیشه به Bandwidth زیادی نیاز دارد.
Session ها بسته به تعداد کاربران می توانند حافظه زیادی مصرف کنند.
Application Variable ها به صورت اشتراکی مصرف می شوند.
Cache بسته به تعداد کاربرانی که از سیستم استفاده می کنند می تواند منابع سیستم (مانند حافظه) را بسیار اشغال کند.
Cookie ها از امنیت کمی برخوردار هستند.
منبع: ArticleBase