در نگاه اول شاید کمی معماری MVC گنگ و مبهم باشه و حتی اون رو چرخوندن لقمه برای به دهان نهادن بپندارید (چه رسمی!) اما وقتی به عمق مسئله پی می برید می بینید که واقعا تکنیک فوق العاده ای برای جدا سازی لایه های مختلف برنامه و ارتباط منطقی بین اونها به وجود میاره که واقعا منحصر به فرد و دوست داشتنی هست.
اول از هر چیز می بینید که معماری MVC به هیچ وجه به درد تازه کارها و افراد مبتدی نمی خوره چون نمی تونید از Component Data Source استفاده کنید. پس اون افرادی که در سایت “برنامه نویس” خوراک روزانشون Drag & Drop هست و به این کارشون افتخار می کنن و این کار رو نهایت RAD Applications می دونند این مطلب رو نخونن که سودی به حالشون نداره…!
تمام وظیفه ی MVC رو یک Http Handler انجام میده و شما رو مجبور به درک مفاهیم Url Rewrting و Url Mapping می کنه.
MVC مخفف Model View Controller هست و دقیقا همین سه جز نیز در پیاده سازی اون نقش دارند.
اگر بخوایم معماری MVC رو با معماری n-tier مقایسه کنیم، می تونیم بگیم که Model معادل DAL و View معادل UI و Controller (نه دقیقا اما) معادل BLL هست.
در MVC مهمترین جز، Controller هست که ارتباط دهنده ی View و Model هست (همانند n-tier)
نیاز نیست که برای هر عملیات یک صفحه ی مجزا داشته باشید! یک Controller برای مجموعه ای از عملیات مرتبط به هم کافیست.
نیاز به تعیین الگوی URL دارید که به طور پیش فرض این الگو به شکل [controller]/[action]/[id]/ هست که می تونید اون رو در Http Handler بنا به نیاز خودتون تغییر بدید.
به طور خلاصه، عملکرد معماری MVC بدین شکل هست که درخواستی ارسال میشه، Http Handler اون درخواست رو میگیره و در الگوهای تعیین شده در خودش، Controller مناسب رو پیدا می کنه و Action (هر متد در Controller یک Action است) مناسب رو فراخوانی می کنه.
و پس از اتمام موفقیت آمیز عملیات، نتیجه رو به صفحه ی مورد نظر ارسال می کنه. این کار با فراخوانی متد RenderView انجام میشه.
واقعا جالب و تر و تمیز کار شده…
جنبه ی جالبتر قضیه این هست که می تونید از TDD هم برای تست پروژه قبل از اجرای واقعی اون بهره ببرید.
TDD مخفف Test Driven Development (توسعه ی تست محور) هست که یکی از اصول مهندسی نرم افزار برای اجرای پروژه با داده های مجازی هست.
البته MVC شما رو مجبور به تبعیت از TDD می کنه!
در نهایت MVC یکی از الگوهای طراحی بسیار جذاب و البته کمی پیچیده هست که در کنار برنامه نویسی بدون لایه در ASP.NET می تونید از اون استفاده کنید.