مروری بر برنامه های ASP.Net و چرخه حیات صفحات (سوالات مصاحبه)
شنبه 24 مهر 1395LifeCycle (چرخه حیات) یک برنامه ASP.Net از زمانی که اولین درخواست برای آن ارسال میشود شروع و تا هنگام POstBack ادامه دارد . معمولا در مصاحبه های کاری ، از شما درخواست میشود که چرخه حیات یک برنامه ASP.Net از زمان اولین درخواست تا زمان PostBack را شرح دهید ، هدف از این مقاله ، پوشش دادن و ارائه مطالبی در همین مورد است . توجه داشته باشید که مطالب بصورت کلی بیان شده اند و جزییات را در این مقاله بررسی نخواهیم کرد .
چرخه حیات یک برنامه 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 صفحات میتوانید استفاده کنید .
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 پردازش میشوند ، همانند کلیک کردن دکمه و ... .
- ASP.net
- 4k بازدید
- 8 تشکر