آموزش asp.net – قسمت سوم – چرخه حیات ASP.NET

asp life cycle

چرخه حیات ASP.NET

چرخه حیات (ASP.NET life cycle) مشخص می کند که، چگونه:

  • ASP.NET صفحات را برای تولید خروجی پویا پردازش می کند
  • برنامه و صفحات آن معرفی و پردازش می شوند
  • ASP.NET صفحات را به صورت پویا کامپایل می کند

چرخه حیات ASP.NET را می توان به دو گروه تقسیم کرد:

  • چرخه حیات برنامه کاربردی (Application Life Cycle)

چرخه حیات یک صفحه (Page Life Cycle)

چرخه حیات برنامه کاربردی ASP.NET

چرخه حیات برنامه کاربردی دارای مراحل زیر است:

  • کاربر یک درخواست برای دسترسی به منابع برنامه کاربردی، ایجاد می کند. مرورگر این درخواست را به وب سرور ارسال می کند.
  • یک خط ارتباطی (pipeline) یکپارچه درخواست اول را دریافت می کند و بدنبال آن رویدادهای زیر روی می دهند:
  • یک شی از کلاس ApplicationManager ایجاد می شود.
  • یک شی از کلاس HostingEnvironment ایجاد می شود و اطلاعاتی مربوط به منابع ارائه می دهد.
  • آیتم های سطح بالا (Top level items) در برنامه کاربردی کامپایل می شوند.
  • اشیاء پاسخ (Response objects) ایجاد می شوند . اشیاء برنامه کاربردی مانند HttpContext ، HttpRequest  و HttpResponse ایجاد شده و مقداردهی اولیه می شوند.
  • یک نمونه از شی HttpApplication ایجاد شده و به درخواست اختصاص داده می شود.

این درخواست توسط کلاس HttpApplication پردازش می شود. رویدادهای مختلفی توسط این کلاس برای پردازش درخواست مطرح شده فعال (raise) می شوند.

چرخه حیات صفحه ASP.NET

هنگامی که یک صفحه درخواست می شود، در حافظه سرور بارگذاری و پردازش می شود، و به مرورگر ارسال می شود. سپس از حافظه ی سرور پاک (unload) می شود. در هر یک از این مراحل، متدها و رویدادها در دسترس هستند، که می توانند با توجه به نیاز برنامه کاربردی لغو شوند.  به عبارت دیگر، شما می توانید کد خود را بنویسید و کد پیش فرض را نادیده بگیرید.
کلاس Page یک درخت سلسله مراتبی از تمام کنترل های روی صفحه ایجاد می کند. تمام کامپوننت های روی صفحه، به جز directive ها (یک سازه زبان که تعیین می کند کامپایلر چگونه ورودی خود را پردازش کند)، بخشی از این درخت کنترل هستند. شما می توانید درخت کنترل را با اضافه کردن trace= “true” به page directive ببینید.

مراحل چرخه حیات صفحه عبارتند از:

  • مقداردهی اولیه
  • معرفی کنترل های روی صفحه
  • بازگرداندن و نگهداری وضعیت ها
  • اجرای کدهای کنترل کننده رویدادها
  • بارگذاری یا نمایش صفحه

درک چرخه صفحه در نوشتن کد هایی کمک می کند که کد نویس می خواهد اتفاق خاصی در یک مرحله  از چرخه حیات صفحه اتفاق بیفتد. همچنین در نوشتن کنترلهای سفارشی و مقدار دهی اولیه آنها در زمان مناسب کمک می کند، همچنین خصوصیت (properties) آنها را با داده های view-state پر کرده و کد کنترل عملکرد را اجرا می کند.
در زیر مراحل مختلف یک صفحه ASP.NET  آورده شده است:

  • صفحه درخواست (Page request) – هنگامی کهNET یک درخواست صفحه می گیرد ، تصمیم میگیرد که آیا صفحه را تجزیه (parse) و کامپایل کند، و یا یک نسخه بایگانی شده از صفحه موجود می باشد،  بر این اساس آن پاسخ ارسال شود.
  • شروع چرخه حیات صفحه(Starting of page life cycle) – در این مرحله، اشیاء درخواست و پاسخ تنظیم می شوند. اگر درخواست یک درخواست های قدیمی و یا postback باشد، در این صورت خاصیت IsPostBack  صفحه بر روی true تنظیم می شود و خاصیت  UICulture صفحه نیز تنظیم می شود.
  • مقدار دهی اولیه صفحه (Page initialization) – در این مرحله، کنترل بر روی صفحه به تنطیم شناسه منحصر به فرد ویژگی UNIQUEID اختصاص داده می شود و تم به کنترل ها اختصاص داده می شوند. برای یک درخواست جدید، داده postback بارگذاری شده و خاصیت های کنترل در مقادیر view-state دوباره ذخیره می شوند
  • بارگذاری صفحه (Page load) – در این مرحله، خواص کنترل ها با استفاده از مقادیر view state و control state تنظیم می شوند.
  • اعتبار سنجی (Validation) – متد Validate از اعتبارسنجی کنترل فراخوانی می شود و پس از اجرای موفق، خصوصیت IsValid صفحه روی true تنظیم می شود.
  • مدیریت رویداد Postback (Postback event handling) – اگر درخواست postback (درخواست قدیمی) باشد، اداره کننده رویداد (event handler) مربوطه فراخوانده می شود.
  • بارگذاری صفحه (Page rendering) – در این مرحله، view state مربوط به صفحه و تمام کنترل ها ذخیره می شوند. صفحه متد Render را برای هر کنترل فراخوانی کرده و خروجی render کردن را در کلاس OutputStream از خصوصیت Response صفحه می نویسد.

خالی کردن (Unload) – صفحه بارگذاری شده به کاربر و همچنین خصوصیات صفحه ، مانند Response و Request فرستاده می شود، و سپس همگی تخلیه و پاکسازی (unload) می شوند .

رویدادهای ASP.NET Page Life Cycle

در هر مرحله از چرخه حیات صفحه، صفحه رویدادهایی را فعال می کند که می توان برای آن کد نوشت. یک event handler  (مدیریت کننده رویداد) اساسا یک تابع یا زیرروال (subroutine)، ملزوم به رویداد می باشد که  از خصوصیات اعلانی مانند onclick یا handle استفاده می کند.

در زیر رویدادهای مربوط به حیات صفحه فهرست شده اند:

  • PreInit – PreInit اولین رویداد در چرخه حیات صفحه است. که خاصیت IsPostBack را بررسی کرده و تعیین می کند که اینکه آیا صفحه postback است یا خیر.  PreInit، تم ها و master pages را تنظیم می کند، کنترل های پویا ایجاد می کند، و همچنین مقادیر get و set خصوصیات را مقداردهی می کند. این رویداد می تواند با استفاده از متدOnPreInit  و یا ایجاد یک کنترل کننده Page_PreInit مدیریت شود.
  • Init: این رویداد control propertyرا مقدار دهی اولیه می کند و control tree را می سازد. این رویداد می تواند با استفاده از متدOnPreInit  و یا ایجاد یک کنترل کننده Page_ Init handler مدیریت شود.
  • InitComplete رویداد InitComplete امکان ردیابی view state را فراهم می کند. تمام کنترل ها ردیابی view state را فعال می کنند.
  • LoadViewState  رویداد LoadViewState اجازه بارگذاری اطلاعات view state  را در کنترل ها فراهم می کند.
  • LoadPostData – در این مرحله، محتویات تمام فیلدهای ورودی که با برچسب <form> تعریف شده اند پردازش می شوند.
  • PreLoad قبل از اینکه داده post back در کنترل بارگذاری شوند، اجرا می شود. این رویداد را می توان با overloading متد OnPreLoad و یا ایجاد یک کنترل Page_PreLoad مدیریت کرد.
  • Load – رویداد Load در ابتدا برای صفحه وسپس به صورت بازگشتی برای همه فرزندان کنترل اجرا می شود. کنترل ها در درخت کنترل ایجاد می شوند. این رویداد را می توان با overloading متد onload و یا ایجاد یک کنترل Page_Load مدیریت کرد.
  • LoadComplete – فرآیند بارگذاری به اتمام رسیده است، control event handlers اجرا شده اند و اعتبار سنجی انجام شده است. این رویداد را می توان با overloading متد OnLoadComplete و یا ایجاد یک کنترل Page_LoadComplete  مدیریت کرد.
  • PreRender – این رویداد درست قبل از اینکه خروجی رندر شود رخ می دهد. با مدیریت این رویداد، صفحات و کنترل می توانند قبل از اجرا و نمایش خروجی هر به روز رسانی را انجام دهند.
  • PreRenderComplete – چون رویداد پیش رندر به صورت بازگشتی برای همه کنترل های فرزند فعال و اجرا می شود، این رویداد از اتمام مرحله قبل از رندر را تضمین می کند.
  • SaveStateComplete – کنترل وضعیت در صفحه ذخیره می شود. اطلاعات Personalization ، control state و view state ذخیره می شود. نشانه گذاری HTML تولید می شود.  این مرحله را می توان با overriding متد Render و یا ایجاد یک کنترل Page_Render مدیریت کرد.
  • UnLoad – فاز UnLoad آخرین مرحله از چرخه حیات صفحه است. رویداد UnLoad برای همه کنترل هابه صورت بازگشتی و در نهایت برای خود صفحه اجرا می شود.  پاکسازی نهایی انجام شده و تمام منابع و مراجع، مانند اتصال پایگاه داده، آزاد می شوند.  این رویداد می تواند با modifying متد OnUnLoad و یا ایجاد کنترل Page_UnLoad مدیریت شود.

برچسب ها

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

یک دیدگاه در “آموزش asp.net – قسمت سوم – چرخه حیات ASP.NET”

  1. tara می‌گه:

    باسلام. وبسایت بسیار خوبی دارید. ممنون از مطالب علمی، شیوا و مفیدتون.
    با اجازتون من چند خط از این پیج را کپی کردم. با تشکر فراوان

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کد امنیتی را در کادر زیر بنویسید *