مروری بر برنامه های ASP.Net و چرخه حیات صفحات (سوالات مصاحبه)

LifeCycle (چرخه حیات) یک برنامه ASP.Net از زمانی که اولین درخواست برای آن ارسال می‌شود شروع و تا هنگام POstBack ادامه دارد . معمولا در مصاحبه های کاری ، از شما درخواست می‌شود که چرخه حیات یک برنامه ASP.Net از زمان اولین درخواست تا زمان PostBack را شرح دهید ، هدف از این مقاله ، پوشش دادن و ارائه مطالبی در همین مورد است . توجه داشته باشید که مطالب بصورت کلی بیان شده اند و جزییات را در این مقاله بررسی نخواهیم کرد .

مروری بر برنامه های ASP.Net و چرخه حیات صفحات (سوالات مصاحبه)

چرخه حیات یک برنامه ASP.Net از زمانی که کاربر توسط مرورگرهایی نظیر FireFox , Chrome و ... از طریق کامپیوتر یا موبایل درخواستی را برای سرور ارسال میکند ، شروع می‌شود . در زیر معماری Life Cycle یک برنامه ASP.Net را مشاهده می‌کنید :



زمانی که یک درخواست توسط مرورگر به (Web Server (IIS ارسال می‌شود ، در خواست به
(Internet Server Application Programming Interface (ISAPI ارسال میشود ، ISAPI مجموعه ای از سرویس های web server  بر مبنای ویندوز هستند که برای توسعه و افزایش کارایی و عملکزد توسط IIS تهیه شده اند . ISAPI ، پسوند (extension) فایل درخواستی را چک میکند و بر مبنای آن ، Httphandler و modulها را که وظیفه مدیریت درخواست را دارند را ، بارگذاری میکند . 

بعد از این مرحله ، با Application pool ، مدیر Applicationها ، برای هر web application یک دامنه جدا ایجاد می‌کند . برای مثال ، ما می‌توانید دو دامنه داشته باشیم یکی برای برنامه A و دیگری برای برنامه B . 

بعد از ایجاد دامنه ی یک برنامه ، ASP.Net برای هر درخواست .web App ،  یک نمونه از  HttpRequest و HttpResponse را ایجاد میکند . زمانی که این انجام شد ، ASP.Net نمونه ای از HttpApplication را ایجاد میکند ، که در طی پردازش درخواست هایی که در زیر نمایش داده شده است ، event هایی را اجرا میکند:

  

نگاهی اجمالی به مواردی که در بالا ذکر شده است ، خواهیم داشت :

• Begin Request : زمانی که درخواست تشکیل میشود ، Begin Request همیشه اولین رویدادی است که در طی پردازش درخواست اجرا میشود .


• Authenticate Request : این رویداد توسط پیکربندی authentication تایید میکند که درخواست قبل از اضافه شدن به handler و module ، حتما authenticated شده است . 

• Authorize Request :این رویداد تایید میکند که درخواست توسط ASP.Net تایید شده است .برای پیاده سازیauthorization سفارشی ، شما میتوانید از این رویداد استفاده کنید .

• Resolve Request Cache :زمانی که رویداد authorization  کامل شد ، با ارسال 
 execution of the event handler ، این رویداد ماژول caching را برای Serve کردن درخواست ، از cache فراخوانی میکند . 

• Map Request Handler : فریمورک ASP.Net از این رویداد برای چک کردن پسوند فایل استفاده میکند و همچنین ، برای درخواست ، handler چک میکند .

• Acquire Request State :زمانی که این رویداد بالا می‌آید ، ASP.Net اطلاعاتی که توسط درخواست با session state آمده است را دریافت میکند در این مورد ، درخواست باید یک Session ID معتبر داشته باشد .

• Execute Request Handler : زمانی که handlerخروجی را تولید میکند ، این رویداد فراخوانی میشود ، و این تنها درخواستی میباشد که توسط کلاس HttpApplication شامل نمیشود .

• Release Request State : این رویداد زمانی که ASp.Net اجرای تمام درخواست handler ها به پایان رساند ، اجرا میشود . همچنین سیگنالی برای State moduleها ارسال میکند که وضعیت فعلی درخواست را ذخیره کنند .  

• Update Request Cache : زمانی که ASP.Net اجرای event handlerها را به پایان رساند ، این رویداد اجازه ذخیره سازی response ها را به caching modulsها میدهد . 

• Log Request : این رویداد قبل از زمانی که ASP.Net هرگونه log ای را برای درخواست فعلی انجام دهد ، به پایان میرسد . همچنین این رویداد برای logهای سفارشی مورد استفاده قرار میگیرند . 

 نکته : توجه داشته باشید که مطالب فوق ، فقط قسمتی از رویدادهای اصلی را شرح میدهد .

حال اجازه دهید به چگونگی چرخه حیات در ASP.Net بپردازیم . زمانی که Life Cycle شروع میشود صفحه ASP.Net از بین چندین رویداد عبور میکند . این رویداد ها میتوانند برای پیاده سازی منظق های سفارشی در طول اجرای چرخه حیات ، توسط توسعه دهندگان مورد استفاده قرار گیرند . صفحات ASp.Net به دو روش از بین رویداد ها عبور میکنند :

• دخواست صفحه برای اولین بار (Page Requested for the first time)
• درخواست صفحه طی یک PostBack (مثلا ، کلیک بر روی یک دکمه )


چرخه حیات صفحه ASP.Net در طی اولین درخواست :
در این مرحله به بررسی چرخه حیات صفحه در زمان اولین درخواست ، می‌پردازیم :




1. Page_PreInit Event : این رویداد ، اولین رویدادی است که در طی Life Cycle اجرا میشود . شما از این event برای تغییر master page و theme صفحات می‌توانید استفاده کنید .

2. Page_InitComplete : این رویداد زمانی که تمام controllهای صفحه ما initialized شدند ، رخ میدهد . توسعه دهندگان در این رویداد قادر به تغییر مشخصات یک Control هستند .

3. Page_InitComplete : این رویداد توسط نمونه ی صفحه فراخوانی میشود . که در آن ، شما توانایی انجام عملیات های مختلف برای تکمیل initialization را دارید .

4. Page_PreLoad Event : این رویداد برای انجام عملیات های یک صفحه یا Controlها ، قبل از فراخوانی رویداد ، مورد استفاده قرار میگیرد . 

5. Page_Load Event : این رویداد تمامی controlها و فرزندانشان را بارگذاری می‌کند . شما از این رویداد برای نوشتن منطق پایگاه داده و یا پر کردن داده در لیست dropdown استفاده کنید . توسعه دهندگان توانایی انجام کارهای خاص در قبال  یک Control را دارند ، برای مثال ، تنظیم مشخصات یک Control .

 6. Page_LoadComplete : این رویداد میتواند برای بارگذاری همه controlهای دیگر مورد استفاده قرار بگیرد  .

7. Page_PreRender : این رویداد برای ایجاد تغییرات نهایی بر روی مشخصات صفحه یا مشخصات Control مورد استفاده قرار می‌گیرد . 

8. Page_SaveStateComplete Event : قبل از این رویداد ، ViewState ساخته شده برای control و صفحه با Key-Value ذخیره شده است . این در یک HiddenFor ذخیره می‌شود . از این رویداد برای تغییر مشخصات صفحه یا Control استفاده نکنید .

9. Page_Render Method : این یک رویداد نیست بلکه یک page method میباشد . هر کنترل
server sideای این رویداد را دارد ، که برای اجرای آن کدها روی مرورگر ، mark-upها را تولید میکند . 

10. Page_Unload Event : این رویداد تمام controlها و سپس صفحه را خالی میکند . توسعه دهندگان از این متد برای Custom logging یا هر گونه عملیات پاکسازی control و صفحه ، استفاده می‌کنند . 
 

چرخه حیات ASP.Net بعد از PostBack :

زمانی که چرخه حیات PostBack صفحه اجرا میشود ، اکثره این رویداد ها یکسان هستند .اما در مجموع ، ما به عملکرد برخی از رویداد ها توجه داریم :

  

• Page_LoadState Event : در طی گردش بین client-to-server و ASP.Net  ، server-to-client در فرمی از ViewStateها ، از Stateهای Control و Page را نگه میدارد . ViewState تحت عنوان
key-valu شامل ControlID و مقدار Control میباشد . این ViewState در هنگام PostBack شدن درخواست ، بارگذاری می‌شود . 

• Page_ProcessPostData Event :این رویداد با استفاده از بروزرسانی کردن مقادیر Control با استفاده از داده هایی که توسط درخواست دریافت کرده است ، پردازشی بر روی Stateهای Control خواهد داشت .

• Server Control Events : در این قسمت همه روبداد های control پردازش می‌شوند ، همانند کلیک کردن دکمه و ... .
 

دانلود نسخه ی PDF این مطلب