پیشنهاد فرادرس

آموزش Requests،ViewState و Page Lifecycle درASP.NET

دسته بندی ها: دات نت ، آموزش های پلورال سایت (Pluralsight) ، آموزش ASP.NET

آموزش-requests،viewstate-و-page-lifecycle-درasp-net

این مجموعه آموزشی(ASP.NET Web Forms Internals: Requests, ViewState & Page Lifecycle) دارای سطح متوسط و مدت زمان 1 ساعت و 4 دقیقه است. و محصول PluralSight می باشد.

معرفی Page Lifecycle :

عبارت Page Lifecycle درواقع چرخه حیات یک صفحه در ASP.NET است که به ترتیب زیر می باشد:

1. Page Request 2. Start 3. Page Initialization 4. Load 5. Validation 6. Postback event handling 7. Rendering 8. Unload

چرخه حیات صفحه در ادامه مطلب به صورت کامل توضیح داده شده است.

معرفی Request :

Request در واقع یک درخواست است که به ASP.NET این امکان را می دهد تا بتواند هدرهای یک درخواست HTML را بخواند.

معرفی ViewState :

یکی از راه کارهایی که در State Management در ASP.NET مطرح می شود ViewState است . در State Management سعی بر این است که داده هایی که در حال حاظر برای کاربر در حال نمایش است ،در پست بک های بعدی (PostBack) حفظ شود تا سرور مجبور به ارسال مجدد و بی مورد داده های اساسی نشود . برای رفع این مشکل راه حل های زیادی وجود دارد . یکی از این راهها استفاده از View State است .

برخی عناوین مطرح شده دراین مجموعه:

  • درخواست بازدید IIS
  • کاربرد دامنه ایجاد شده
  • Recap  و Takeaways
  • viewstate برای ASP.NET
  • صفحه چرخه و viewstate
  • تکمیل فرم سفارش ASP.NET
  • و...

لیست سر فصل های لاتین مجموعه:

	Introduction			
Introduction	 		
Motivation and Contents	 		
Pre-Page Execution: Request Architecture			
Introduction	 		
Contents	 		
The Integrated IIS/ASP.NET Pipeline	 		
	Pre-Page Execution Architecture	 		
A Request Hits IIS	 		
Into the Integrated Pipeline	 		
Native and Managed Modules Kick In	 		
The ManagedEngine Module Triggers ASP.NET Integration	 		
The Application Domain is Created	 		
Request hits the Handler	 		
…And the Page Execution Starts	 		
The IIS Classic Mode (IIS 6.0)	 		
Recap and Takeaways	 		
	Introducing ViewState			
Introduction	 		
Contents	 		
Introducing ViewState	 		
ViewState for ASP.NET	 		
	The Page Lifecycle and ViewState			
Introduction	 		
Step 0: Generating the Compiled Class	 		
Step 1: Page Initialization	 		
Step 2: Loading Page Data	 		
Step 3: Loading the Page	 		
Step 4: Rendering the Page	 		
A Full Lifecycle	 		
	ASP.NET Walkthroughs			
Introduction	 		
Walkthrough 1: Viewstate of an Empty or Viewstate-disabled Page	 		
Walkthrough 2: What is Stored in the Viewstate?	 		
Walkthrough 3: A ViewState Gotcha: Recursive Events	 		
Walkthrough 4: Reducing Viewstate Size	 		
Walkthrough 5: Viewstate and Dynamic Controls

معرفی کامل چرخه حیات  یک صفحه در ASP.NET : 

دانستن چرخه حیات یک صفحه در asp.net برای بسیاری از توسعه دهندگان امری است ضروری.چرا که این بسیار مهم است که کدهای مورد نظر ما در کدام مرحله از این چرخه انجام شوند و همچنین این که اصولا عملکرد صفحه در شرایط مختلف به چه شکل است. در این مقاله صرفا قصد داریم تا این چرخه را به صورت ساده و گویا برای شما بیان کنیم شاید ساده ترین شکل بیان ترتیب رخدادهای ممکن چنین باشد: 1. Page Request 2. Start 3. Page Initialization 4. Load 5. Validation 6. Postback event handling 7. Rendering 8. Unload ابتدا بیاییم برای هرکدام از این بخشها یک مخفف معرفی کنیم. البته این نکته را هم در نظر داشته باشید که از آنجایی که Page Request اساسا بخشی از چرخه حیات صفحه نیست و تنها مشخص کننده این است که چرخه شروع به کار کرده است، آن را به حساب نخواهیم آورد S – Start I – Initialize L – Load V – Validate E – Event Handling R – Render مجموع این مخفف ها عبارت SILVER را تشکیل میدهد که به خاطر سپاری آن نیز ساده است. اکنون بیایید تا هر مرحله را مفصل تر بررسی کنیم Start

این مرحله ای است که ویژگیهایی اصلی صفحه نظیر Request,Response,IsPostBack و ... مقداردهی میشوند.بعنوان یک برنامه نویس شما نیازی ندارید که در این مرحله کاری انجام دهید. اما در صورتی که نیاز داشتید تا رفتار صفحه را در این مرحله کنترل کنید یا عمل خاصی را انجام دهید میتوانید از متد PreInit استفاده کنید. این راه میتواند برای ایجاد کنترلها به شیوه پویا در زمان اجرا استفاده کنید یا این که master page یا تم صفحه مورد نظر خود را تغییر دهید.

این نکته مهم است که چنانچه درخواست (request) به صورت postback باشد، مقادیر کنترلها در این لحظه هنوز از view state بازیابی نشده اند و چنانچه در این مرحله یک ویژگی از یک کنترل را تنطیم کنید، ممکن است این ویژگی بعدا بازنویسی شود. Initialize

این مرحله برای برنامه نویسان اهمیت بسیار زیادی دارد. در اینجاست که تم ها و master page ... تنظیم شده و id های یکتای کنترلها نیز تولید شده اند.

در این مرحله میتوانید به متدهای Init,InitComplete,PreLoad دسترسی داشته باشید. مایکروسافت استفاده از این متدها را به این شکل توصیه میکند:

Init : این رخداد پس از آنکه همه کنترلها مقداردهی اولیه شدند و تنظیمات تم و master page و ... انجام شد رخ میدهد. از این متد میتوانید برای خواندن یا مقدارهای ویژگی های کنترلها استفاده کنید.

InitComplete : این رخداد توسط شیء Page فراخوانی میشود. از این رخداد برای پردازش اعمالی استفاده میشود که نیاز دارند کنترلها مقدارهای اولیه شده باشند

PreLoad : از این رخداد برای انجام پردازش های مورد نظر قبل از رخ دادن رخداد Load استفاده میشود. پس از اینکه این رخداد اتفاق افتاد، view state برای صفحه و کنترلها بارگذاری میشود و سپس کلیه داده های postback شده که در request مربوطه ضمیمه شده اند پردازش میشوند.

Load : این مرحله برای برنامه نویسان شناخته شده تر و پر استفاده تر است. در این جاست که کنترلها بارگذاری شده اند و کلیه امور مربوط به مقداردهی اولیه و view state انجام گردیده است.

در اینجا شما میتوانید ویژگیهای کنترلها را تغییر داده و query string ها را بخوانید، با پایگاه داده ها ارتباط برقرار کنید و ...

Validation : اگر شما کنترلی داشته باشید که نیاز به اعتبارسنجی داشته باشد، آن کنترلها در این مرحله ارزیابی میشوند و شما اینجا میتوانید از ویژگی IsValid کنترل استفاده کنید. رخدادی که به این مرحله اختصاص یافته است Validate نام دارد.

Event Handling : رسیدگی به رخدادهای کنترلهای سمت سرور در این مرحله رخ میدهد. این بدان معنی است که رخدادهایی نظیر Click, SelectedIndexChanged و که به کنترلها انتساب یافته اند؛ در این مرحله توسط خود کنترلها رخ میدهند. در این خصوص به این نکات توجه کنید:

LoadComplete : در این مرحله، همه کنترلهای صفحه بارگذاری شده اند

PreRender : چند اتفاق مهم اینجا می افتد. اول اینکه شیء Page برای هرکنترلی EnsureChildControls را فراخوانی میکند. علاوه بر این، هر کنترل مقید شده به منبع داده که DataSourceID داشته باشد متد DataBind آن فراخوانی میشود. به این نکته دقت کنید که رخداد PreRender به ازای کنترل روی صفحه رخ میدهد. در نهایت نیز ViewState برای صفحه و همه کنترلهای آن ذخیره میشود.

SaveStateComplete : این به منای خاتمه یافتن ذخیره شدن ViewState است. اگر شما میخواهید کاری را انجام دهید که نیازی به تغییرات در کنترلها ندارد اما نیاز دارد که ViewState ذخیره شده باشد، میتوانید از این رخداد استفاده کنید.

Render : render در واقع یک رخداد نیست بلکه شیء Page این متد را برای هر کنترل فراخوانی میکند تا علائم HTML را برای کنترل مربوطه به خروجی که همان مرورگر است بفرستد. این متد برای آن دسته از برنامه نویسانی مهم است که میخواهند کنترلهای خاص خود را ایجاد کنند چرا که میتوانند این متد را بازنویسی کنند. چنانچه کنترل شما از یک کنترل سمت سرور ASP.Net مشتق میشود نیازی به بازنویسی این متد ندارید مگر این که بخواهید در رفتار آن تغییری ایجاد کنید.

Unload : این آخرین رخدادی است که ابتدا برای هر کنترل و سپس برای خود صفحه فراخوانی میشود. نکته این که در این مرحله کلیه کنترلها به خروجی فرستاده شده اند و نمیتوان در آنها تغییری اعمال کرد. در طول این رخداد هر گونه تلاش برای استفاده از Response منجر به رخ دادن خطا میشود. معمولا از این رخداد برای انجام خاتمه دهی و تمیز کردن عملیات استفاده میشود مثلا بستن ارتباطهای باز به پایگاه داده ها و ... است. متدها

متدهای زیر که میتوانند بازنویسی شوند نیز به ترتیب در طی چرخه حیات صفحه رخ میدهند. البته توجه داشته باشید که برخی از این متدها به طور بازگشتی فراخوانی میشوند و با توجه به نوع صفحه ممکن است چند بار فراخوانی شوند. شما میتوانید این متدها را بازنویسی کرده و با قرار دادن یک break point در هر مرحله ترتیب رخ دادن آنها را امتحان کنید. Construct ProcessRequest FrameworkInitialize InitializeCulture If child controls are present: AddParsedSubObject CreateControlCollection AddedControl ResolveAdapter DeterminePostBackMode OnPreInit OnInit TrackViewState OnInitComplete OnPreLoad OnLoad OnLoadComplete EnsureChildControls CreateChildControls OnPreRender OnPreRenderComplete SaveViewState OnSaveStateComplete CreateHtmlTextWriter RenderControl Render RenderChildren VerifyRenderingInServerForm OnUnload Dispose نتیجه گیری زمانی که یک برنامه asp.net مینویسید بسیار مهم است که بدانید چه کاری را در کجا انجام دهید. داشتن درک صحیح از ترتیب اتفاق افتادن رخدادهای صفحه شما را از ساعتها کلافه شدن و خطایابی نجات میدهد. علاوه بر آن میتوانید از بروز خطاهای ناخواسته و همچنین خطاهای کشف نشده جلوگیری کنید.

حجم فایل:153MB

آیا این نوشته را دوست داشتید؟
Pluralsight ASP.NET WEB FORMS INTERNALS REQUESTS VIEWSTATE AND PAGE LIFECYCLE

پیشنهاد فرادرس