بررسی اجمالی State Management در ASP.Net

دوشنبه 3 اسفند 1394

این مقاله مرور کلی بر تکنیک های State Management در ASP.NET را فراهم می کند ، که می توان بسته به نیاز برنامه از یک یا چند تکنیک استفاده کرد.

بررسی اجمالی  State Management در ASP.Net


State Management فرایند یست که می تواند   state و اطلاعات یک صفحه را  روی  چندین درخواست ( request ) نگهداری  کند.

ASP.NET چند روش برای حفظ اطلاعات فراهم می کند. می توان بسته به نیاز برنامه از یک یا چند تکنیک استفاده کرد.

روش های مختلفی که برای مدیریت State استفاده می شود. عبارتند از :

1. View State

2. Cookies

3. Query String

4. Session State

5. Application State

تمام روش های بالا برای Management State استفاده می شود. View State، کوکی ها، Query String از روش های سمت کلاینت Management State هستند در حالی که Session State و Application State  از روش های Management State سمت سرور می باشند.

state management  در ASP.NET  بطور گسترده به دو دسته زیر تقسیم می شوند:

State Management سمت کلاینت

State Management سمت سرور

State Management سمت کلاینت

در State Management  سمت کلاینت ، State صفحه در سمت کلاینت نگهداری میشود. در زیر تکنیک های مختلفی برای مدیریت State سمت کلاینت موجود است.

View State

Cookies

Query String

در  State Management سمت کلاینت ، داده در سمت کلاینت ذخیره می شود ودر هر زمان ،به مرورگر فرستاده میشود. این امر موجب افزایش استفاده از پهنای باند میشود. اگر حجم داده ها بیشتر شود ، واکنشگرا  بودن برنامه کمتر خواهد شد ومشکلات مربوط به اجرا رخ می دهد.

View State

روش  View State ، کلاینت ساید است . با توجه به ماهیت stateless پروتکل HTTP، صفحه نمیتواند هر گونه اطلاعات را در خود ذخیره کند.  View State روشی است که از آن  برای ذخیره سازی برخی از اطلاعات مربوط به صفحه یا متغیرهای آن، استفاده میشود. در view state اطلاعات به شیوه ی کد گذاری ذخیره می شوند.

View State با استفاده از یک فیلد مخفی زمانی که فرم پست میشود   ،state  را در  کلاینت ذخیره میکند.
هر بار که صفحه در خودش پست میشود، محتوای فیلدی بنام viewstate به عنوان بخشی از پست ارسال می شود.

تحلیل View State

View State میتواند در یک صفحه استفاده شود.

 زمانی که اطلاعات رو بصورت فیلد مخفی ذخیره میشود ،میتوانید سورس کد را در مرورگر ببینید. از این رو آن که یک راه امن نیست.

بدلیل افزایش  اندازه ی داده های ذخیره شده در View State ،مشکلات سربار عملکرد بوجود می آیند.

Cookies

کوکی یکی دیگر از روش State Management سمت کلاینت برای ذخیره داده ها و دسترسی به آن در صفحه دیگری است. این در واقع یک فایل کوچک ذخیره شده در RAM کلاینت و یا بر روی هارد دیسک است. کوکی ها می توانند به صورت موقت یا دائم باشند.

کوکی ها موقت: کوکی ها موقت در RAM کلاینت ذخیره می شود. و با یک درخواست و پاسخ منتقل میشود. داخلی تمام کوکی ها موقتی هستند. یک مثال کوچک در نظر بگیرید. در صورت درخواست Default.aspx را Default2.aspx و کوکی ،فرستاده می شوند پس چگونه وب سرور میفهمد که درخواست از همان مشتری است؟ یک session id چیزی جز یک سری از تصاویر بازدید شده توسط همان کلاینت نیست.  این session id  در رم کلاینت ذخیره می شود و دفعه بعد هم درخواست  را با فایل و  همان ID  وارد شده چک میکند، صفحه را ارائه میدهد.

کوکی ها دائم: کوکی ها دائمی به عنوان یک فایل بر روی هارد دیسک کلاینت ذخیره می شود. در این مسیر ذخیره میشود: C:\Documents and Settings\Cookies folder   . کوکی های دائم با تنظیم Expires property ایجاد شده اند.

به عنوان مثال:

 ck.Expires= Date and Time.NOW.AddSeconds (20) ;
کوکی ها حداکثر 4 KB از اطلاعات را  ذخیره میکنند.

تحلیل کوکی ها

    کوکی یک فایل متنی کوچک است، بنابراین مقدار کمی از اطلاعات را ذخیره میکند.
     بدلیل اینکه در سمت کلاینت ذخیره می شود ،امن نیست. به عنوان مثال، این یک ریسک است که نام   کاربری / رمز عبور بر روی دستگاه کلاینت ذخیره شود.
     در برخی موارد، مرورگر کوکی را بلاک میکند.

Query String

query string   یک تکنیک  State Management  سمت کلاینت است، که اطلاعات آن به URL اضافه میشود.
query string را می توان در نوار آدرس مرورگر مشاهده کرد.

query string با یک علامت سوال ؟ و attribute/value، و با نام “category” خوانده میشود

query string یک راه ساده برای حفظ اطلاعات State فراهم می کند.

به منظوراین که مقادیر query string در حین پردازش صفحه در دسترس باشد، از دستور HTTP GET  استفاده میشود.

اطلاعات یک query string  را  نمی توان برای ارسال اطلاعات حساس استفاده کرد، از آنجا که یک کاربر می تواند  URL  را به کاربران دیگر ارسال و اطلاعات را عبور دهد.

تحلیل query string

از آنجا که می توان در نوار آدرس مرورگر اطلاعات را خواند واصلاح کرد ،روش امنی نیست.

 تنها مقدار کمی از اطلاعات را می تواند منتقل کند.

 بعضی مرورگرها طول یک URL را محدود میکنند.

 

State Management سمت سرور

در State Management سمت سرور ،State  صفحه  در سمت سرور نگهداری میشود. تکنیک های مختلف  State Management سمت سرور عبارتند از:

Application State (Variable)

Session State (Variable)

SQL Server database

State Management سمت سرور ، امنیت بهتری فراهم می کند. State بر روی سرور ذخیره و در نتیجه به کلاینت تحویل داده میشود.  بدلیل اینکه داده از کلاینت  به مرورگر فرستاده نمیشود،ترافیک سمت سرور را کاهش می دهد.

Application State (Variable)

 Application State (Variable)  یک مکانیسم global storage  است که موجب ذخیره سازی داده میشود ودر هر صفحه وب در یک برنامه تحت وب قابل دسترس است. داده ها که در variable برنامه ذخیره شده اند بین هر درخواست  به سرور ارسال میشوند.

application state در کلاس HTTP Application که به عنوان یک دایرکتوری اجرا میشود ،قرار داردو داده ها در    application variable نگهداری میشود . global  برای برنامه های تحت وب است و با یک کاربر خاص در ارتباط است .با قرار دادن داده ها در application state ،یک نقطه دسترسی برای داده های برنامه به اشتراک گذاشته به دست می آورید .ذخیره  داده ها در  application state دائمی نیست و هر زمان که نرم افزار مجدد اجرا شود ،پاک میشود .

لازم به ذکر است که بسیاری از کاربران  به طور همزمان به برنامه دسترسی دارند بنابراین برای فراخوانی  شی application state  باید رشته ای امن داشت. برای این منظور در  ASP.NET از lock keyword  برای دسترسی به اشیاء application state،  استفاده می شود.

Session State (Variable)

Session یک سری درخواست ساخته شده توسط مشتری است. یک Session جدید زمانی که یک کاربر اولین درخواست را  به برنامه های تحت وب می فرستد ،شروع می شود.  به این معنی که هر کاربر در برنامه های تحت وب یک session state جداگانه دارد.  از session state  برای ذخیره و بازیابی اطلاعات کاربر ،و  هدایت کاربر از یک صفحه به یک صفحه دیگر در برنامه های کاربردی تحت وب ASP.NET استفاده میشود.

session   یک دوره timeout دارد،  که پس از timeout ،اطلاعات session از دست میرود و یک session جدید برای کاربر ایجاد میشود. زمانی که کاربر در یک دوره زمانی فعال نباشد، timeout  رخ می دهد. شی  session به عنوان یک دیکشنری key/value است ،که توسط یک نمونه از شی Http Session اجرا میشود.

session برای حالات زیر استفاده می شود:
     - برای پیگیری  session های کاربر.
     - رویداد افزایش مدیریت session .
     - ذخیره داده های خاص در session

اشیاء session یکی از اشیاء ذاتی پشتیبانی شده توسط ASP.NET می باشند. و یک راه حل مدیریت session وب کامل هستند.

 

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

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

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

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