بررسی اجمالی State Management در ASP.Net
دوشنبه 3 اسفند 1394این مقاله مرور کلی بر تکنیک های State Management در ASP.NET را فراهم می کند ، که می توان بسته به نیاز برنامه از یک یا چند تکنیک استفاده کرد.
State Management فرایند یست که می تواند state و اطلاعات یک صفحه را روی چندین درخواست ( request ) نگهداری کند.
ASP.NET چند روش برای حفظ اطلاعات فراهم می کند. می توان بسته به نیاز برنامه از یک یا چند تکنیک استفاده کرد.
روش های مختلفی که برای مدیریت State استفاده می شود. عبارتند از :
1. View State
2. Cookies
3. Query String
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 وب کامل هستند.
- ASP.net
- 2k بازدید
- 5 تشکر