TAHA
09-30-2009, 06:55 AM
بهبودهای حاصل شده در View state نگارش 2 ای اس پی دات نت :
اگر به مقاله ی کوتاهی که چندی پیش در سایت منتشر شد (حفظ حالت در ASP.NET) مراجعه کنید ، View state را یکی از مواردی خواهید یافت که سبب حفظ حالت کنترل های وب در محیط state less وب می گردند.
این ایده به ذات خود بسیار مفید بوده و سبب تمرکز بیشتر برنامه نویس بر روی مسائل مهمتر کاری بجای نگرانی در مورد شکل نهایی و مقادیر موجود در کنترل ها به ازای هر درخواستی از طرف کاربر می گردد. اما مهمترین مشکل با آن ، حجم آن است! اگر به سورس نهایی صفحات تولید شده ی ASP.NET 1.X مراجعه نموده و مقدار فیلد مخفی __VIEWSTATE را بررسی نمایید گاهی تا حدود چند ده کیلوبایت می شود که سبب کندی بارگذاری صفحات در خطوط اتصالی کم سرعت اینترنت می گردد (و این خاصیت برای تمام کنترل های وب به صورت پیش فرض برگزیده شده است). یکی از دلایل این حجم بالا ، رمزگذاری شده بودن محتوای آن است (با استفاده از روش base64 به صورت خودکار). روش base64 دارای 33 درصد سرجمع (overhead) می باشد (بهایی است که باید بایت امنیت و همچنین حفظ حالت پرداخت!). بنابراین توصیه می شود در حالتهایی مانند استفاده از دیتاگرید بدون خاصیت paging ، حتما View State را خاموش نمایید.
با بهینه سازی هایی که در الگوریتم تولید View Sate در ASP.NET 2.0 صورت گرفته ، حجم نهایی View Sate تولیدی تقریبا نصف حجم View state تولیدی در ASP.NET 1.x است. این امر سبب تولید صفحاتی سریعتر (از دیدکاربری با اتصال اینترنت معمولی) خواهد گردید.
در ASP.NET 2.0 مفهوم جدیدی به نام Control state نیز ارائه گشته است. در اینجا حفظ حالت مقادیر یک کنترل وب به View state و حفظ شکل ظاهری آن به Control state واگذار شده است (partitioning between behavioral and UI state) . در اینجا حتی اگر View state را هم خاموش نمایید بازهم Control state روشن بوده و کارش را تمام و کمال انجام خواهد داد.
برای مثال در ASP.NET 1.x اگر خاصیت View State مربوط به دیتاگرید را خاموش نمایید، بسیاری از توانایی های آن مانند paging ، edit و غیره را از دست خواهید داد. اما در ASP.NET 2.0 با معرفی Control state حتی اگر View state را نیز خاموش نمایید باز هم کنترل به کار عادی خودش ادامه خواهد داد (زیرا مهمترین خواص را برای حفظ حالت و ظاهر خود در Control state کم حجم ذخیره می کند) .
مآخذ:
http://msdn.microsoft.com/msdnmag/is...e/default.aspx (http://msdn.microsoft.com/msdnmag/issues/04/10/ViewState/default.aspx)
Nikhil Kothari's Weblog (http://www.nikhilk.net/)
اگر به مقاله ی کوتاهی که چندی پیش در سایت منتشر شد (حفظ حالت در ASP.NET) مراجعه کنید ، View state را یکی از مواردی خواهید یافت که سبب حفظ حالت کنترل های وب در محیط state less وب می گردند.
این ایده به ذات خود بسیار مفید بوده و سبب تمرکز بیشتر برنامه نویس بر روی مسائل مهمتر کاری بجای نگرانی در مورد شکل نهایی و مقادیر موجود در کنترل ها به ازای هر درخواستی از طرف کاربر می گردد. اما مهمترین مشکل با آن ، حجم آن است! اگر به سورس نهایی صفحات تولید شده ی ASP.NET 1.X مراجعه نموده و مقدار فیلد مخفی __VIEWSTATE را بررسی نمایید گاهی تا حدود چند ده کیلوبایت می شود که سبب کندی بارگذاری صفحات در خطوط اتصالی کم سرعت اینترنت می گردد (و این خاصیت برای تمام کنترل های وب به صورت پیش فرض برگزیده شده است). یکی از دلایل این حجم بالا ، رمزگذاری شده بودن محتوای آن است (با استفاده از روش base64 به صورت خودکار). روش base64 دارای 33 درصد سرجمع (overhead) می باشد (بهایی است که باید بایت امنیت و همچنین حفظ حالت پرداخت!). بنابراین توصیه می شود در حالتهایی مانند استفاده از دیتاگرید بدون خاصیت paging ، حتما View State را خاموش نمایید.
با بهینه سازی هایی که در الگوریتم تولید View Sate در ASP.NET 2.0 صورت گرفته ، حجم نهایی View Sate تولیدی تقریبا نصف حجم View state تولیدی در ASP.NET 1.x است. این امر سبب تولید صفحاتی سریعتر (از دیدکاربری با اتصال اینترنت معمولی) خواهد گردید.
در ASP.NET 2.0 مفهوم جدیدی به نام Control state نیز ارائه گشته است. در اینجا حفظ حالت مقادیر یک کنترل وب به View state و حفظ شکل ظاهری آن به Control state واگذار شده است (partitioning between behavioral and UI state) . در اینجا حتی اگر View state را هم خاموش نمایید بازهم Control state روشن بوده و کارش را تمام و کمال انجام خواهد داد.
برای مثال در ASP.NET 1.x اگر خاصیت View State مربوط به دیتاگرید را خاموش نمایید، بسیاری از توانایی های آن مانند paging ، edit و غیره را از دست خواهید داد. اما در ASP.NET 2.0 با معرفی Control state حتی اگر View state را نیز خاموش نمایید باز هم کنترل به کار عادی خودش ادامه خواهد داد (زیرا مهمترین خواص را برای حفظ حالت و ظاهر خود در Control state کم حجم ذخیره می کند) .
مآخذ:
http://msdn.microsoft.com/msdnmag/is...e/default.aspx (http://msdn.microsoft.com/msdnmag/issues/04/10/ViewState/default.aspx)
Nikhil Kothari's Weblog (http://www.nikhilk.net/)