مدیریت State در ASP.NET

یکشنبه 24 آبان 1394

در این مقاله راجع به نگهداری ، پاک کردن State مربوط به صفحه در ASP.NET بحث خواهیم کرد. مدیریت State مبحث مهمی در Asp.Net Web Form است که در اینجا راجع به آن صحبت خواهیم کرد.

مدیریت State در ASP.NET

در این مقاله راجع به نگهداری ، پاک کردن State مربوط به صفحه در ASP.NET بحث خواهیم کرد. مدیریت State مبحث مهمی در Asp.Net Web Form  است که در اینجا راجع به آن صحبت خواهیم کرد.

نگاه اجمالی به State

همان طور که میدانید مرورگر ها ذاتا stateless هستند.پس از اینکه درخواست ما توسط سرور انجام شد ارتباط ما با سرور قطع می شود.

اما چیزی که مطرح می توان کرد این است که اساسا State چیست ? stateless یعنی اینکه وقتی ما سایتی را مشاهده می کنیم مرورگر ما به سروری که این وب سایت بر روی آن قرار دارد متصل می شود این اتصال از طریق پروتکل های HTTP و یا HTTPs انجام می شود.بعد از هر پاسخ به درخواست ارتباط بین سرویس دهنده و سرویس گیرنده قطع می شود.وجود حالت Stateless باعث می شود که به هزاران کاربری که به طور همزمان به سرور وصل میشوند پاسخ داد و نگران حافظه نبود.

اما برخی مواقع نیاز داریم که اطلاعات مربوط به درخواست کاربر را ذخیره داشته باشیم به همین دلیل روش های مدیریت State به میان می آید.

بعد از اینکه سرور به ما پاسخ می دهد می توانیم صفحه را ببینیم .بعد ازاینکه کار ما با صفحه تمام شد و مرورگر را می بندیم مرورگر آدرس هایی را که ویزیت کرده ایم و یا صفحاتی که مشاهده کرده ایم را به خاطر نمی سپارد.یعنی State صفحه ای که قبل از بستن مرورگر بوده است را به خاطر نمی سپارد.به این رفتار Stateless می گوییم .

تعریف State

همان طور که در تعریف واژه Stateless دیدید تمام منابع و مراجع که برای مشاهده یک صفحه لازم بوده است حذف می شوند.این منابع می توانند شامل موارد زیر باشند .

 Objects

 Allocated Memory

  Sessions ID's

Some URL info

انواع مدیریت State

همان طور که در شکل می بینید دو نوع مدیریت State وجود دارد ، سمت سرور و سمت کاربر

State Management سمت کاربر

زمانی که از State Management سمت کاربر استفاده می کنیم اطلاعات مربوط به State سمت کاربر ذخیره می شود.یکی از مهمترین state هایی که استفاده می شود view state است .در این state اطلاعات مورد نیاز درون یک فیلد مخفی نگه داری شده و در هنگام PostBack به سرور ارسال می شود.وقتی صفحه دوباره از سرور به سمت کاربر بخواهد ارسال شود اطلاعات داخل View State بازیابی می شود.هر کنترلی بر روی فرم دارای یک view State است .

از جمله state مورد استفاده در سمت کاربر View State,control State,Hidden Fields,cookies,Query String می باشد .

View State: این حالت توسط کنترل ها بیشتر مورد استفاده قرار می گیرد.این کار باعث میشو د خصوصیات کنترل ها در بین Post Back ها حفظ شود.عمر View State به اندازه یک صفحه است و اگر کاربر از یک صفحه به صفحه دیگر برود این اطلاعات از بین می رود.

فيلدهای مخفی یا Hidden fields : فیلد مخفی در نمایشگر دیده نمی شود اما می توان اطلاعاتی را در آن ذخیره کرد.

  
int newVal = Convert.ToInt32(HiddenField1.Value) + 1;  
HiddenField1.Value = newVal.ToString();  
Label2.Text = HiddenField1.Value;  

Cookies: حجم کوچکی از داده است که در حافظه سیستم و یا در حافظه مرورگر کاربر ذخیره می شود.این داده ها شامل موارد مرتبط با یک صفحه است که در یک فایل متنی ذخیره می شود.کوکی ها می توانند به صورت موقت یا دائم ذخیره شوند.وقتی سرور درخواست اطلاعات داشته باشد اطلاعات داخل کوکی به سرور ارسال می شود.

int postbacks = 0;  
if (Request.Cookies["number"] != null)  
{  
    postbacks = Convert.ToInt32(Request.Cookies["number"].Value) + 1;  
}  
// Generating Response  
else   
{  
    postbacks = 1;  
}  
Response.Cookies["number"].Value = postbacks.ToString();  
  
Result.Text = Response.Cookies["number"].Value; 

Query String(QS) . QS: QS شامل اطلاعاتی است که به انتهای یک URL صفحه اضافه خواهد شد. QS با علامت سوال شروع شده سپس نام آن QS آورده شده و بعد مقدار آن آورده می شود .با کمک QS می توان اطلاعات را از یک صفحه به صفحه دیگر ارسال کرد.

// Getting data  
if (Request.QueryString["number"] != null)   
{  
    View.Text = Request.QueryString["number"];  
}  
  
// Setting query string  
int postbacks = 0;  
  
if (Request.QueryString["number"] != null)   
{  
    postbacks = Convert.ToInt32(Request.QueryString["number"]) + 1;  
}  
else   
{  
    postbacks = 1;  
}  
  
Response.Redirect("default.aspx?number=" + postbacks); 

Stateهای سمت سرور

Application State: یک محل ذخیره سازی عمومی است .که تمام صفحات یک برنامه به آن محل دسترسی دارند.

Session state : اطلاعات مربوط به کاربر خاص و برنامه خاص را به طور جداگانه می توان ذخیره کرد.مدت زمان این ذخیره سازی محدود است .در واقع Session نشستی است که کاربر و سرور بین هم دارند و در طی بازه زمانی مشخص توسطSessionn  می توانیم درخواست های یک کاربر خاص و اطلاعات او را شناسایی و ذخیره کنیم .لازم نیست که کاربر حتما در برنامه login  کرده باشد تا بتوان اطلاعات او را ردیابی کرد.

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید