
معرفی انواع اشیای مدیریت وضعیت ( State ) در Asp.Net
مقدمه :
هر بار که صفحه به سرور ارسال ( Post ) می شود ، نسخه ای جدید از آن و کلاس مربوطه ساخته می شود . در برنامه نویسی سنتی وب ، این مسئله غالبا به این معنا بود که کلیه اطلاعات مرتبط با صفحه و کنترل های آن ، در جریان رفت و برگشت به سرور از بین می رفتند . برای مثال ، اگر کاربر اطلاعات را در یک کادر متن وارد نماید ، ممکن است این اطلاعات در رفت و برگشت صفحه به سرور و کلاینت ، از بین برود . برای فائق آمدن بر این مشکل سنتی ، Asp.Net دارای چندین گزینه است که می توانید به وسیله آنها ، اطلاعات موقتی صفحه را به راه های مختلف ذخیره نموده و از پاک شدن آنها جلوگیری نمایید . این گزینه ها عبارتند از :
View state
Control state
Hidden fields
Cookies
Query strings
Application state
Session state
Profile Properties
در اشیای View State ، Control State ، Hidden Fields ، Cookies و Query String ، اطلاعات را به نحوی بر روی کامپیوتر کاربر ( کلاینت ) ذخیره می کنند .
اما گزینه های Application State ، Session State و Profile Properties اطلاعات را در حافظه سرور و یا در یک پایگاه داده ذخیره می کنند . هرکدام از این گزینه ها دارای مزیت و معایب منحصر به فردی هستند . در ادامه به تشریح آنها خواهیم پرداخت .
گزینه های مدیریت وضعیت (State ) در سمت کلاینت :
در بخش اول به معرفی گزینه های ذخیره اطلاعات در صفحه و یا بر روی کامپیوتر کاربر ( کلاینت ) می پردازیم . در گزینه های این بخش هیچ اطلاعاتی بر روی سرور ذخیره نمی شود .
1) View State : این خاصیت یک شی فهرست وار را برای ذخیره سازی اطلاعات بین درخواست های متعدد ارسال و دریافت صفحه به سرور ، برای آن صفحه فراهم می کند . این شی روش پیش فرض ذخیره اطلاعات صفحه و کنترل های موجود در آن بین رفت و برگشت ها به سرور است . هنگامی که صفحه به سرور ارسال می شود ، وضعیت جاری صفحه و اطلاعات موجود در کنترل های آن ، در قالب یک متن رمزنگاری شده و درون یک یا چند کنترل Hidden Field ذخیره می شوند . اگر حجم اطلاعات ذخیره شده از مقدار تعیین شده در خاصیت MaxStateFieldLength بیشتر باشد ، صفحه از چندین کنترل Hidden Field استفاده خواهد کرد . هنگامی هم که صفحه از سرور برمی گردد ( Postback می شود ) ، اطلاعات موجود در شی متنی View State را خوانده و آنها را به کنترل های مرتبط برمی گرداند . برای دریافت اطلاعات بیشتر راجع به نحوه عملکرد این شی ، به بخش آموزش کار با شی View State بروید .
2) Control State : برخی اوقات شما نیاز دارید تا اطلاعات وضعیت یک کنترل خاص را در یک مقطع برای کارایی صحیح اش نگهداری کنید . برای مثال فرض کنید که یک کنترل دلخواه ( Custom Control ) را طراحی کرده اید که دارای لبه ها ( Tab ) ی مختلفی است که اطلاعات گوناگونی را نگهداری می کند . مثلا در جریان رفت و برگشت صفحه به سرور برای این کنترل خاص نیاز دارید که بدایند قبل از ارسال صفحه به سرور ، کنترل اطلاعات کرام لبه را نشان می داده است . از خاصیت View State برای نگهداری وضعیت این کنترل می توانید استفاده نمایید اما این ویژگی قابل غیرفعال کردن در صفحه است و ممکن است سهوا یا عمدا خاموش شده و باعث از کار افتادن کارایی کنترل فوق شود . برای حل این شکل ، Asp.Net استفاده ار ویژگی Control State را فراهم کرده است . به وسیله شی Control State شما می توانید وضعیت جاری یک کنترل را قبل از ارسال به سرور در صفحه ذخیره نموده ، بدون اینکه امکان غیرفعال شدن آن وجود داشته باشد ، برخلاف View State .
3) Hidden Fields : زبان Asp.Net این امکان را به شما می دهد تا اطلاعات خود را در فیلدهای مخفی یا کنترل HiddenField ذخیره نمایید . این کنترل ها بصورت تگ های input از نوع Hidden Field بر روی صفحات Html ، رندر می شود . کنترل Hidden Fields خروجی ظاهری بر روی صفحه ندارد اما مانند سایر کنترل های Asp.Net می توانید خواص مورد نظرتان را برای آن تعیین نمایید . هنگامی که صفحه به سرور ارسال می شود ، مقدار یک کنترل Hidden Fields همراه با مقادیر سایر کنترل های صفحه از طریق یک پروتکل HTTP Form ارسال می شود . کنترل Hidden Fields اطلاهات را درون خاصیت Value خود نگهداری می کند و بصورت مستقیم قابل تعیین است . برای دریافت اطلاعات بیشتر به بخش آموزش کنترل Hidden Fields در Asp.Net بروید .
نکته 1 : اگر می خواهید که یک کنترل Hidden Fields کارایی صحیح ای داشته و اطلاعات آن در زمان Postback صفحه قابل دسترسی باشد ، باید صفحه را توسط یک متد HTTP Post به سرور ارسال نمایید . اگر صفحه را به واسطه کلیک بر روی یک لینک و یا از طریق متد HTTP GET به سرور ارسال نمایید ، این کنترل کار نخواهد کرد .
نکته 2 : با وجود اینکه اطلاعات کنترل Hidden Fields بر روی صفحه قابل مشاهده نیست ، اما از طریق مشاهده کد صفحه ( Source Code ) توسط سایر کاربران می تواند دیده شود . لذا اطلاعات خاص را نباید در این کنترل قرار داد .
4) کوکی ها (Cookies) : یک کوکی بخش کوچکی از اطلاعات است که درون یک فایل متنی text یا در حافظه مرورگر ذخیره می شود . کوکی ها می توانند دارای مدت انقضاء بوده و یا نامحدود زمانی باشند . شما می توانید از کوکی ها برای نگهداری اطلاعات کاربران یا نرم افزارها و ... استفاده نمایید . کوکی ها بر روی کامپیوتر کاربر ذخیره شده و هنگامی که مرورگر صفحه ای را درخواست می کند ، کوکی آن صفحه را نیز همراه با درخواست خود به سرور ارسال می کند . سرور می تواند کوکی ها را خوانده و استفاده نماید . برای دریافت اطلاعات بیشتر راجع به کوکی ها به بخش آموزش کوکی ها در Asp.Net بروید .
5) Query String : شی بعدی دخیره در حافظه ، کویری استرینگ ها می باشند . Query String ها ، اطلاعاتی هستند که به ادامه آدرس صفحه الحاق می شوند . برای مثال یک Query String معمولی می تواند بصورت زیر باشد :
کد
http://www.developer1.ir/listwidgets.aspx?category=basic&price=100
- - , .
برچسب:
نویسنده: استخدام کار