MVC مخفف سه کلمه Model (مدل ) و View(نمایشگر) و Controller( کنترلگر) است. فریم ورک ASP.NET که از آن برای ساختن برنامه های وبی با MVC استفاده می شود.
برخی از برنامه نویسان، همچنان از ASP.NET که بر مبنای فرم های وب و Postback است، استفاده می کنند، برخی از ویژگی های MVC سود می برند و بعضی ها هم دو پلت فرم را ترکیب می کنند و این موضوع بیانگر این است که هیچکدام از پلت فرم ها ناقض یکدیگر نیستند. در واقع MVC بر روی معماری های چند لایه ای جهت تفکیک بخش های مختلف برنامه (بخش های منطقی برنامه مانند داده ها، مجوزها، کنترل صحت داده ها و لایه های مرتبط با کاربر نهایی) قرار می گیرد. مفهوم تازه ای نیست، خیلی وقت است که در جاوا، PHP و بسیاری پلت فرم های دیگر از این الگوها برای طراحی نرم افزار استفاده می شود. اما برای طراحان و توسعه دهندگان ASP.NET تازگی دارد.
اجزای تشکیل دهنده ی MVC
1- Model(مدل): قسمتی از برنامه کاربردی است که مسئول بازیابی داده از بانک اطلاعاتی، ذخیره آن، تبدیل آن به شی یا آبجکت ها و پیاده سازی منطق برنامه برای داده های دامنه ی مسئله است. در حقیقت بار اصلی معماری MVC بر عهده ی این بخش است. مثلاً یک آبجکت Product ممکن است اطلاعات را از بانک اطلاعاتی بازیابی کرده، بر روی آنها عملیاتی را انجام دهد و سرانجام نتیجه را در بانک اطلاعاتی ئ در جدول Products ذخیره کند.
۲- view(نمایشگر): اجزایی از برنامه است که واسط کاربری برنامه (UI) را می سازد. معمولاً این UI از داده های مدل ساخته می شود. در واقع نقطه پایان برنامه کاربردی است . به کاربر نتایج عملیات و بازیابی و نمایش داده از طریق برقراری ارتباط با دو بخش دیگر؛ یعنی مدل و کنترلگر را نشان می دهد.برای مثال، هنگامی که کاربر در فرم ورود به سیستم رمز عبور خود را وارد می کند، اکثر برنامه نویسان در همان فرم اقدام به چک کردن رمز عبور می کنند که این عمل مغایر با قوانین MVC است. در MVC هنگامی که کاربر رمز عبور را کرد، رمز عبور بدون هیچگونه اعمالی به بخش های دیگر فرستاده می شود و فقط یک نتیجه ساده یا خبر از بخش های دیگر دریافت می کند که از طریق آن اجازه ی ورود به برنامه داده می شود.
۳- Controller(کنترلگر): اجزایی از برنامه هستند که مدیریت تعامل با کاربر را بر عهده دارند. می توان گفت که واسط بین مدل و نمایشگر می باشند؛ یعنی با مدل کار می کند و در انتها نمایشگری را برای نشان دادن واسط کاربری انتخاب می کند. ورودی کاربر را مدیریت کرده و به آنها پاسخ می دهد و با کاربر تعامل می کند. برای مثال، کنترلگر عبارت های پرس و جوی بانک اطلاعاتی را مدیریت کرده و آن ها را به مدل ارسال می کند، وظیفه اجرای پرس و جوها با مدل است.
درک الگوی MVC
برای درک بهتر MVC شکل زیر معرفی می کنیم، نمودار شکل ۱ اساس الگوی MVC می باشد.
تشریح شکل: یک درخواست در شکل بالا مسیر های زیر را می پیماید:
۱- کاربر با مرورگر در ارتباط است. آدرس را در مرورگر وارد می کند و یا یک لینک یا کلید را در صفحه وب کلیک می کند، این نقطه شروع درخواست است(مرحله ۱ در شکل).
۲- درخواست به کنترلگر فرستاده می شود، آن را اعتبار سنجی می کند و اجرای درخواست را در مدل الزامی می کند(مرحله ۲ در شکل ).
۳- مدل به بانک اطلاعاتی رجوع کرده وداده های بازیابی شده را به کنترگر می فرستد(مرحله ۳ در شکل ).
۴- کنترلگر داده ها را فرمت کرده و آنها را به نمایشگر می فرستند(مرحله ۴ در شکل ).
۵- در مرحله آخر نمایشگر داده های مورد نیاز را دریافت کرده و جواب را به کاربر باز می گرداند(مرحله ۵ در شکل ).
چه زمانی برنامه های MVC را ایجاد کنیم؟
شما باید در هنگام انتخاب ASP.NET و ASP.NET MVCبرای ساخت برنامه های وبی بسیار دقت کنید. MVC جایگزینی برای فرم های وب ASP.NET نیست و شما می توانید از هر کدام از آنها برای ساخت برنامه های وبی استفاده کنید. اگر شما یک برنامه وبی بر مبنای فرم های وب دارید، می توانید همچنان آن را به همان شیوه ی سابق ادامه دهید.
مزایای برنامه های وبی مبتنی بر MVC
- با تقسیم یک برنامه به سه قسمت مدل، نمایشگر و کنترلگر، مدیریت برنامه یا پروژه را ساده تر می کند.
- از ViewState و فرم های سروری استفاده نمی کند و از این نظر برای برنامه نویسانی که تسلط کامل بر رفتار برنامه را می خواهند عالی است.
- از الگوی کنترلگر جلو استفاده می کند که درخواست های برنامه را توسط یک کنترلگر پردازش می کند. این مسئله باعث می شود تا بتوانیم برنامه هایی را طراحی کنیم که از زیر ساخت های غنی مسیر یابی پشتیبانی می کند.
- پشتیبانی بهتری از طراحی و توسعه آزمون محور دارد.
- برای برنامه های پشتیبانی شده توسط تیم های بزرگ برنامه نویسان و زارحی که کنترل بسیار بر رفتار برنامه را می خواهند، بهتر کار می کنند.
مزایای برنامه های وبی مبتنی بر فرم های وب
- از مدل رویداد استفاده می کند که وضعیت را روی HTTP حفظ می کند. این روش برای برنماه های وبی با منطق یک خطی مناسب است.
- از الگوی کنترلگر صفحه استفاده می کند که به هر صفحه کارایی تابعی می دهد.
- از View State و فرم های سروری استفاده می کند که مدیریت اطلاعات وضعیت را ساده تر می کند.
- برای تیم های کوچک برنامه نویسی که می خواهند با استفاده از صدها کنترل موجود برای ساخت سریع برنامه وبی استفاده کنند، مناسب است.
- عموماًبرای توسعه وب ساده تر است. زیرا اجرای آن ( کلاس Page، کنترل ها و …) متمرکز شده اند و معمولاً کد کمتری نسبت به MVC نیاز دارد.
ویژگی های ASP.NET MVC
- جداسازی وظایف برنماه کاربردی (منطق ورودی، منطق کاری و منطق واسط کاربری) و امکان تست کردن برنامه و طراحی و توسعه آزمون محور به صورت پیش فرض. تمام ارتباطات اصلی در MVC بر مبنای واسط است و می توان آن ها را با اشیای ساختگی Mick تست کرد. می توانید کنترلگرها را بدون اینکه آنها را در ASP.NET اجرا کنید، تست کنید و این باعث افزایش سرعت و انعطاف تست برنامه می شود. می توانید از هر فریم ورک تست که با فریم ورک Net. منطبق است برای این کار استفاده کنید.
- فریم ورکی توسعه پذیر و قابل اتصال. اجزای اصلی ASP.NET MVC به گونه ای طراحی شده اندکه به راحتی جایگزین یا سفارشی شوند. می توانید به سادگی پیاده سازی های خودتان را جایگزین موتور نمایشگر، سیاست های آدرس، سریالی کردن پارامترهای متدهای عملیات یا سایر اجزا کنید. همچنین ASP.NET MVC از فریم ورک های تزریق وابستگی و وارونگی کنترل پشتیبانی می کند. به شما امکان می دهد به جای این که اشیا را توسط کلاس ها بسازید، آنها را از جایی بیرون از کد مثل فایل های تنظیمات بگیرید و این مسئله تست برنامه را ساده تر می کند.
- نگاشت های قوی آدرس ها که امکان ساخت برنامه هایی با آدرس های با معنی و جستجو شدنی (قابل جستجو توسط موتورهای جستجوگر) را می دهدو نیازی نیست که آدرس ها پسوند فایل داشته باشند، آنها به گونه ای طراحی شده اند که از الگوهای نامگذاری قابل فهم برای موتورهای جستجوSEO و آدرس های انتقال وضعیت قابل نمایش REST پیروی کنند.
- پشتیبانی برای استفاده از نشانه گذاری در صفحات ASP.NET(فایل های aspx). کنترل های کاربر (فایل های ascx.) صفحات Master(با پسوند master.) به عنوان قالب های نمایشگر. شما می توانید از برخی ویژگی های موجودASP.NET از قبیل صفحات master تو در تو، اسکریپت درونی (<%=%>)، کنترل های سرور اعلان شده، قالب، انقیاد داده ها، محلی سازی و … در فریم ورک ASP.NET MVC استفاده کنید.
- پشتیبانی از ویژکی های موجود ASP.NET : ASP.NET MVC به ما این امکان را می دهد تا از ویژگی هایی مانند مجوز فرم و تشخیص هویت ویندوز، مجوز آدرس ها، عضویت و نقش ها، خروجی و کش کردن داده ها و Session و مدیریت وضعیت پروفایل، مانیتور کردن صحیح، سیستم پیکر بندی و معماری عرضه کننده استفاده کنید.