در این درس، قصد داریم به آموزش و بررسی چرخه حیات (Life cycle) یک درخواست HTTP Request، از زمان ایجاد تا پایان سیکل کاری و مسیری که در چهارچوب کاری MVC طی می کند، بپردازیم.
مطمئنا با مفهوم چرخه حیات در سایر چهارچوب کاری آشنا بوده و این مسئله مختص MVC نیست. برای مثال، پلتفرم ASP.Net Wenform دارای یک چرخه حیات کامل برای تولید و نمایش صفحات وب است. همچنین سایر پلتفرم های .NET ، مثل برنامه های ویندوز موبایل (windows phona Apps) نیز دارای چرخه حیات خاص خود هستند. توجه : چیزی که بین تمام این چهارچوب های کاری مهم و یکسان است، این بوده که آشنایی با چرخه کاری در هر پلتفرم، باعث می شود با روند کار آن ها بهتر آشنا شده و درک درستی از نحوه عملکرد برنامه داشته باشید. چهارچوب کاری MVC، دارای 2 مدل چرخه حیات (Life Cycle) به شرح زیر است :
چرخه حیات برنامه application life cycle، به زمانی اشاره دارد که پروسه برنامه با اجرای سرور IIS شروع شده و تا متوقف شدن آن ادامه دارد. این محدوده زمانی توسط رویداد شروع (Start event) و رویداد پایان (end event) برنامه در فایل startup پروژه، مشخص شده است.
چرخه حیات درخواست (request)، ترتیب رخ دادن رویدادهایی است که برنامه در هر بار اجرای یک درخواست HTTP Request، انجام می دهد. درگاه ورود و شروع هر برنامه MVC Application، با عملیات مسیردهی (Routing) آغاز می شود. هر بار که پلتفرم ASP..Net MVC یک درخواست (Request) را دریافت می کند، به وسیله ماژول مسیردهی (URL Routing Module) می فهمد که چگونه بایستی آن را مدیریت کند.
تمامی مسیرها (Routes) دارای یک مدیریت کننده یا route hardler هستند که درواقع دروازه ورود به برنامه های MVC می باشند.
چهارچوب کاری MVC، عملیات تبدیل اطلاعات دریافتی از مسیر (Route,Data) به کنترلر مناسب جهت اجرای درخواست را مدیریت می کند. پس از اینکه کنترلر مناسب انتخاب شد، مرحله مهم بعدی، اجرای متد اجرایی یا Action Execution است. یک کامپوننت به نام action invoker متد Action مناسب جهت فراخوانی کنترلر را پیدا و انتخاب می کند. پس از اینکه متد اجرایی action result آماده شد، مرحله مهم بعدی که رخ می دهد، اجرای خروجی یا result Execution است. MVC مراحل تعیین کد و تولید خروجی یا result را از هم جدا کرده است. اگر خروجی (result) از نوع نما (View Type) باشد، موتور View Engine فراخوانی شده و مسئول اجرا و تولید خروجی View خواهد بود. اما اگر نتیجه (result) یک نما (View) نباشد، متد action result درون خود اجرا می شود. این عملیات Result Execution، پاسخ خروجی را برای درخواست HTTP Request را تولید می کند.