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

شنبه 24 مهر 1395

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 پردازش می‌شوند ، همانند کلیک کردن دکمه و ... .
 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید