چرخه حیات MVC (بخش دوم)

در این مقاله قصد داریم به صورت عملی چرخه حیات برنامه های mvc با بازدن مثال و دستکاری کردن مراحل آن آموزش دهیم .در اینجا یک ماژول ویژه خواهیم نوشت و آن را به برنامه اضافه خواهیم کرد.

چرخه حیات MVC (بخش دوم)

در ادامه مقاله چرخه حیات برنامه های mvc بخش اول قصد داریم که روال هایی که در حین چرخه حیات برنامه گفته شد را در اینجا کمی سفارشی کنیم و ماژول های خودمان را handle کنیم .چرخه معمول را در حالت عادی در مقاله قبل مشاهده کردیم حال برای درک بهتر در این مقاله در هر مرحله دستکاری هایی را انجام می دهیم .در اینجا باید کمی کد نویسی کنیم قبل از اینکه برنامه اجرا شود.

بنابراین نیاز داریم که از رویداد PreApplicationStartMethod استفاده کنیم .در کد زیر ماژولی که نوشته ایم را می بینید

 public class CustomModule : IHttpModule  
    {
        public void Init(HttpApplication context)
        {
            context.LogRequest += Context_LogRequest;
        }
        private void Context_LogRequest(object sender, System.EventArgs e)
        {
            Debug.WriteLine("آیتم با موفقیت لاگ شد ");
        }
        public void Dispose()
        {
            throw new System.NotImplementedException();
        }
    }

به صورت ساده یک کلاسی نوشته ایم که از IHttpModule   ارث بری می کند در داخل این کلاس متدهای مختلفی نوشته ایم که در متد Context_LogRequest به صورت ساده فقط یک پیامی نمایش داده می شود .بعد از این کار global.asax را ویرایش کرده ایم .در ادامه این فایل را می بینید .

در ضمیمه ای که به همراه مقاله وجود دارد یک مدل از طریق Entity Framework به برنامه خود اضافه کردیم .سپس کنترلر به همراه صفحات view را برای آن ایجاد کردیم .بعد از این کار وقتی برنامه را در حالت debug اجرا می کنیم .می بینید که ابتدا برنامه وارد global.asax می شود .سپس توسط متد RegisterCustomModule ماژولی که نوشته بودیم در برنامه ثبت می شود .سپس برنامه وارد متد application_Start شده و کار ثبت الگوهای آدرس در داخل کالکشن آدرس هایی را انجام می دهد .بعد از اینکه مسیر درخواست ما با یکی از مسیر های موجود در برنامه همخوانی داشت به کنترلر مربوطه می رویم .

شکل زیر برنامه در حالت debug را نمایش می دهد .

  public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterCustomModule()
        {
            HttpApplication.RegisterModule(typeof(CustomModule));
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
        protected void Application_End()
        {
            Debug.WriteLine("Application Stopped");
        }

    }

همان طور که می بینید متد application_start شروع برنامه ماست .بعد از اینکه وارد این متد شدیم چون ماژول خاص خود را نوشته ایم وارد ماژول خود می شویم و در داخل دیباگ یک Log نوشته می شود .

حال اگر برنامه را اجرا کنیم شکل زیر را در نهایت خواهیم دید

فایل های ضمیمه
دانلود نسخه ی PDF این مطلب