آموزش ASP.Net

آموزش ASP.Net - چرخه حیاط

چرخۀ حیات / life cycle ASP.Net مشخص می کند که چگونه:

  • Net صفحات را برای تولید خروجی های پویا (dynamic output) پردازش می کند.
  • نرم افزار و صفحات آن نمونه سازی (instantiate) و پردازش شده اند.
  • Net صفحات را به صورت پویا ترجمه یا کامپایل می کند.

چرخۀ حیات ASP.Net به دو گروه تقسیم می شود:

  • Application life cycle (چرخۀ حیات برنامه)
  • page life cycle (چرخۀ حیات صفحه)

 

چرخۀ حیات برنامه (application life cycle) ASP.Net :

چرخه ی حیات اپلیکیشن مراحل زیر را شامل می شود:

  • کاربر یک درخواست / request برای دسترسی به application resources (منابع برنامۀ کاربردی) می دهد، سپس صفحۀ مرورگر این درخواست را به سرور وب ارسال می کند.
  • یک pipeline (خط ارتباطی) یکپارچه و متحد الشکل request ها را دریافت کرده و به دنبال آن رخدادهای زیر روی می دهند:
    • یک شئ (object) از کلاس ApplicationManager ایجاد می شود.
    • یک شئ (نمونه از نوع شئ) از کلاس HostingEnvironment ایجاد می گردد و این شئ اطلاعاتی مربوط به منابع ارائه دهد.
    • آیتم های سطح بالا (top-level items) داخل برنامه ی کاربردی مورد نظر (application) کمپایل می شوند.
  • Response object ها ایجاد می شوند. Application object هایی از قبیل HttpContext, HttpRequest و HttpResponse ایجاد شده و مقدار دهی اولیه (initialize) می شوند.
  • نمونه (instance) ای از شئ HttpApplication ایجاد گردیده و به request (درخواست) تخصیص داده می شود. این request به وسیلۀ کلاس HttpApplication پردازش می شود.
  • برای اینکه کلاس نام برده request مورد نظر را پردازش کند، رخدادهای متفاوتی فعال (raise) می شوند.

 

چرخۀ حیات صفحه (page lifecycle) asp.net

زمانی که یک صفحه درخواست (request) می شود، صفحۀ درخواست شده در حافظۀ سرور بارگذاری و پردازش شده و به مرورگر ارسال می گردد، سپس از حافظۀ سرور پاک می شود. هر یک از این مراحل، method ها (متد) و event هایی (رخداد) را شامل می شود که می توانند طبق نیاز اپلیکیشن مربوطه بازنویسی شوند (override). به عبارت دیگر شما می توانید برای بازنویسی (override) کد پیش فرض کد خود را بنویسید (کد پیش فرض را بازنویسی کنید).

کلاس page یک hierarchical tree (نمودار درختی سلسله مراتبی) متشکل از همۀ کنترل های روی صفحه ایجاد می کند. همۀ کامپوننت های روی صفحه، به جز directive ها (یک سازۀ زبان یا language construct  که تعیین می کند کامپایلر چگونه ورودی / input خود را پردازش کند)، قسمتی از این control tree  می باشند . می توانید با اضافه کردن trace= "true" به page directive دستورات این control tree را مشاهده کنید.

مراحل مربوط به page lifecycle (چرخۀ حیات صفحه) به شرح زیر می باشند:

  • مقداردهی اولیه (initialization)
  • نمونه سازی اولیه ی (instantiation) کنترل ها روی صفحه
  • اجرای کدهای کنترل کننده ی رویدادها (Execution of the events handler codes)
  • Page rendering (بارگذاری یا نمایش صفحه(

درک page cycle در نوشتن کدهایی کمک می کند که برنامه نویس با نوشتن آن کدها می خواهد اتفاق خاصی در یک مرحله از page lifecycle (چرخه ی حیات صفحه) رخ دهد. این امر همچنین در نوشتن control های سفارشی یا اختصاصی، و مقدار دهی اولیه ی آنها در زمان درست کمک می کند، همچنین property  (خصوصیت های) آنها را با داده های view-state پر کرده (populate) و control behavior code  (کد کنترل عملکرد) را اجرا می کند.

در ادامه مراحل مختلف مربوط به یک صفحه یا page ASP.Net ارائه شده اند:

  • Page request (مرحله ی درخواست صفحه) - وقتیNet یک page request دریافت می کند، تصمیم می گیرد که آیا صفحه را تجزیه (parse) و کمپایل کند یا اینکه یک نسخه ی ذخیره شده (cached version) از پیج موجود می باشد، بر این اساس پاسخ فرستاده می شود.
  • آغاز چرخۀ حیات صفحه .(start of the page lifecycle) در این مرحله اشیاء (object) request و response تنظیم و مقداردهی می شوند. چنانچه request، یک request قدیمی یا postback (اسمی است که به فرایند تحویل یک صفحه یnet به سرور جهت پردازش، داده می شود) باشد, در آن صورت خاصیت IsPostBack بر روی مقدار true تنظیم می شود. همچنین خاصیت (property) UICulture صفحه تنظیم (مقدار دهی) می شود.
  • مقداردهی اولیه ی صفحه .(page initialization) در این مرحله با مقداردهی (set) خاصیت (property) UniqueID، به کنترل های روی صفحه ID (شناسه) های منحصر بفرد اختصاص داده شده و به دنبال آن تم های گرافیکی به control ها اعمال می شوند. برای یک درخواست جدید داده های postback بارگذاری شده وproperties / control خاصیت های control ها در مقادیر view state ذخیره می شوند.
  • بارگذاری صفحه (page load) - در این مرحله خاصیت های control با استفاده از مقادیر view state و control state تنظیم می شوند.
  • اعتبارسنجی (validation) – تابع اعتبارسنجی فراخوانی شده و پس از اجرای موفقیت آمیز اعتبار سنجی, خاصیت (property) صفحه IsValid باشد یا page روی true تنظیم می شود (مقدار true به خاصیت isvalid تخصیص داده می شود).
  • Postback event handling (مدیریت رویداد postback ) - در صورتی که درخواست یک  postback باشد، event handler  (مدیریت کنندۀ رخداد) مربوطه فراخوانده (invoke) می شود.
  • Page rendering (بارگذاری و نمایش صفحه)- در این مرحله view state مربوط به صفحه و همۀ control ها ذخیره می شوند. صفحه / page متد render را ویژه ی تک تک control ها صدا زده و خروجی (output) فرایند اجرا و نمایش صفحه (rendering) را داخل کلاس OutputStream خاصیت response صفحه را write می کند.
  • Unload (تخلیه بار)- صفحۀ بارگذاری شده (rendered page) به سرویس گیرنده (client) ارسال می شود و همچنین خاصیت های page (page properties) از قبیل Response و Request همگی unload شده و پاک می گردند.

 

رویدادهای ASP.Net page life cycle


در هر مرحله از چرخ، حیات صفحه (page lifecycle event), صفحه رویداد هایی (event) را فعال می کند که می توان برای آن ها کد نوشت event handler (کنترلگر یا مدیریت کنندۀ رخداد) اساسا یک تابع (function) یا زیرروال (subroutine) مقید یا متصل به رویداد (event) می باشد که از خصیصه های اعلانی یا تعریف کننده (declarative attributes) مانند onclick یا handle استفاده می کند.

ذیل رویدادهای مربوط به چرخه ی حیات صفحه (page lifecycle event) برای شما فهرست شده:

  • Prelnit : اولین رویداد در چرخۀ حیات صفحه می باشد، که خاصیت (property) IsPostBack را بررسی کرده و مشخص می کند که صفحه یک postback است یا خیر این رویداد در حقیقت به شما اجازه می دهد وضعیت page request (درخواست صفحه) را بررسی کنید, برای مثال چک کنید آیا صفحۀ مورد نظر در پاسخ به یک postback بارگذاری می شود یا خیر. Prelnit تم ها و master page (صفحات اصلی) را تنظیم و مقداردهی می کند، کنترل های پویا (dynamic controls) ایجاد می کند و همچنین به شما این امکان را می دهد مقادیر get و set خاصیت (property) را مقداردهی می کند. 
  • Init : این رویداد control property را مقداردهی اولیه می کند، سپس control tree ساخته می شود این رویداد در واقع پس از اینکه server control مقداردهی اولیه شده باشد روی می دهد / فعال یا اجرا می شود. 
  • :InitComplete این رویداد امکان مسیریابی view state را فراهم می کند. همه کنترل ها مسیریابی view-state را فعال می کنند (هنگامی روی می دهد که مقداردهی اولیه صفحه (page initialization) به اتمام رسیده باشد). 
  • LoadViewState : این رویداد امکان بارگذاری اطلاعات view state را در control ها فراهم می کند.
  • LoadPostData : طی این مرحله تمام محتویات فیلدهای ورودی که با تگتعریف شده اند، پردازش می شوند.
  • PreLoad : قبل از اینکه داده های postback در کنترل ها بارگذاری شوند، اجرا می شود. این رویداد می تواند با overloading متد OnPreLoad یا ایجاد یک Page_PreLoad handler مدیریت شود.
  • Load : این رویداد در ابتدا برای صفحه (page) و سپس به صورت بازگشتی (recursive) برای همه کنترل ها (control) اجرا می شود. کنترل هایی در control tree ایجاد می شوند. این رویداد می تواند با اضافه بارگذاری ( overload کردن) تابع OnLoad یا ایجاد یک Page_Load handler مدیریت شود.
  • LoadComplete : فرآیند بارگذاری تکمیل شده، control event handler ها اجرا شده و اعتبار سنجی صفحه (page validation) انجام می شود. این رویداد به وسیلۀ اضافه بارگذاری (overload) متد OnLoadComplete یا ایجاد یک Page_LoadComplete handler مدیریت می شود.
  • PreRender : این رویداد درست قبل از اینکه خروجی render شود اجرا می گردد. با مدیریت این رویداد، صفحه ها و کنترل ها می توانند قبل از اجرا و نمایش (render) خروجی، هرگونه آپدیتی انجام دهند.
  • PreRenderComplete : از آنجایی که رخداد (event) PreRender به صورت بازگشتی (recursive) ویژه ی کلیه ی control های فرزند (child control) فعال واجرا می شوند، رخداد PreRenderComplete از تکمیل مرحله ی pre-rendering اطمینان حاصل می کند (باعث می شود مرحله ی pre-rendering کامل اجرا شود). 
  • SaveStateComplete: : در صفحه ذخیره می شود. همچنین personalization و اطلاعات مربوط به control state و view state ذخیره می گردند، علامت یا نشانه گذاری با HTML آغاز می شود. این مرحله را می توان با overload کردن متد render و یا ایجاد یک Page_Render handler مدیریت کرد. 
  • UnLoad این مرحله آخرین مرحله ازچرخۀ حیات صفحه (page lifecycle) می باشد. رویداد UnLoad  را در این مرحله برای همۀ کنترل ها به صورت بازگشتی (recursive) و درآخر برای خود صفحه اجرا (فعال) می کند. آخرین پاکسازی (cleanup) انجام شده و همۀ منابع (resources) و ارجاعات (reference)، از قبیل اتصالات به پایگاه داده آزاد می شوند. این رویداد به وسیله ی تعریف ( modify کردن) متد OnUnLoad یا ایجاد یک Page_UnLoad handler  مدیریت می شود.
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش ASP.Net

Learn ASP.Net

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

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

لطفا چند لحظه منتظر بمانید ...