نماد سایت بلاگ ایران هاست

استفاده صحیح از Application State و Session State در بهینه سازی عملکرد asp.net

امروزه برنامه های تحت وب دارای چالش های خاصی در مدیریت وضعیت صفحات هستند و این امر بخصوص برای برنامه های وبی که تحت فرم های وب ساختار یافته اند ، بیشتر صدق می کند.

فهرست این مقاله ( با کلیک روی هر عنوان به آن قسمت منتقل می شوید) پنهان

انتخابی که شما انجام میدهید اعم از آنکه  چگونه و کجا یک وضعیت را ذخیره نمایید تاثیر بسزایی در عملکرد و مقیاس پذیری برنامه شما خواهد داشت.چند نوع مختلف از وضعیت ها وجود دارد که در اینجا به ۲ مورد از مهمترین وضعیت ها و تاثیر آنها در بهینه سازی عملکرد ASP.Net اشاره خواهیم کرد:

Application State

Application state در واقع برای ذخیره سازی اطلاعات ایستا در برنامه کاربرد دارد . ASP.Net به صورت کلی Application state را جهت انتقال برنامه های ASP(classic active server page) به پلتفرم .net بکار میبرد و این امر را برای توسعه دهندگان بسیار راحت ساخته است.

اگر از Application State استفاده می نمایید میتوانید  موارد زیر را جهت بهینه سازی عملکرد برنامه مد نظر داشته باشید:

باید همواره سعی نمایید داده ها را در اعضای ایستای یک کلاس تعریف نمایید ( از تعریف آنها در اشیاء برنامه خود بپرهیزید). این امر باعث افزایش کارایی برنامه شما خواهد شد زیرا دسترسی شما به یک متغییر ایستا بسیار سریعتر است .

به عنوان مثال میتوانید قطعه کد ساده زیر را در نظر بگیرید(تعریف در اعضای static یک کلاس صورت گفته است):

<%

private static string[] _states[];

private static object _lock = new object();

public static string[] States

{

  get {return _states;}

}

public static void PopulateStates()

{

  //ensure this is thread safe

  if(_states == null)

  {

    lock(_lock)

    {

        //populate the states…    }

  }

}

public void Application_OnStart(object sender, EventArgs e)

{

  PopulateStates();

}

%>

Application State دارای کاربردی گسترده بوده و خاص سرور است بنابر این شما میتوانید اطلاعات ورودی و خروجی را در آن ذخیره نمایید ولیکن بهتر است داده های فقط خواندنی read-only)) را در آن ذخیره نمایید تا از وابستگی سرور به این داده ها جلوگیری شود . اشیاء Cache شده میتوانند جایگزین مناسب تری برای داده های read-only  باشند.

عدم اجرای این عمل برنامه شما را درتنگنا قرار داده و باعث می شود کارایی برنامه شما بشدت کاهش یابد زیرا برنامه نوشته شده تحت پلتفرم asp.net یک نخ (thread) خاص را هنگام دسترسی به کامپوننت مورد نظر اجرا میکند.

Session State

اگر نیاز دارید که از Session State در برنامه ASP.Net استفاده نمایید می توانید از  Session State های زیر استفاده نمایید و هریک دارای درجات مختلف بوده و عملکرد و مقیاس پذیری خاصی در برنامه شما خواهد داشت.

جهت بهینه سازی عملکرد Session State دستور العمل های زیر را مد نظر داشته باشید :

میتوان session state را برای همه ی برنامه های موجود بر روی server و یا برای برخی برنامه های خاص و یا صفحه ای مورد نظر مانند آنچه در ذیل آمده است ،غیر فعال نمود:

جهت غیر فعال کردن Session State برای همه ی برنامه های میتوان کد زیر را در Machine.config  قرار داد:

<sessionState mode=’Off’/>

جهت غیر فعال کردن Session State برای برنامه ای خاص میتوان کد بالا را در web.config  برنامه مورد نظر قرار داد.

جهت غیر فعال کردن Session State برای صفحه ای خاص میتوان از کد زیر در تنظیمات صفحه page setting استفاده نمود:

<%@ Page EnableSessionState=”false” . . .%>

<%@ Page EnableSessionState=”ReadOnly” . . .%>

سوالات متداول

Application state در واقع برای ذخیره سازی اطلاعات ایستا در برنامه کاربرد دارد . ASP.Net به صورت کلی Application state را جهت انتقال برنامه های ASP(classic active server page) به پلتفرم .net بکار میبرد و این امر را برای توسعه دهندگان بسیار راحت ساخته است.
اگر نیاز دارید که از Session State در برنامه ASP.Net استفاده نمایید می توانید از Session State های زیر استفاده نمایید و هریک دارای درجات مختلف بوده و عملکرد و مقیاس پذیری خاصی در برنامه شما خواهد داشت.
این نوع به نام state Server نیز شناخته می شود. این session از ویندوز سرویسی با نام ASP Stateجهت تنظیمات استفاده می نماید لذا برای استفاده از آن باید این ویندوز سرویس را در وب سرور اجرا نمایید .
خروج از نسخه موبایل