MVC مخفف Model Views Controller در واقع یک الگوی طراحی (design pattern) جهت جداسازی قسمت های مختلف برنامه است. معماری MVC از سه بخش Model و View و controller تشکیل می شود که در این مقاله مفهوم MVC و نحوه ارتباط سه بخش Model و View و controller با یکدیگر را بررسی خواهیم کرد.

MVC مخفف Model Views Controller

MVC چیست؟

در واقع MVC بر روی معماری های چند لایه ای جهت جداسازی قسمت های مختلف برنامه و به طور دقیق تر جدا کردن بخش ها منطقی برنامه اعم از دیتا ، permission ها، چک کردن صحت داده ها و … از لایه Presentation layer یا در واقع همان لایه ای که مستقیما با کاربر نهایی (End user) در ارتباط است، قرار میگیرد. پس بر اساس توضیحات فوق می توانیم هر یک از بخش های معماری MVC یعنی Model و View و controller را به شکل زیر تعریف کنیم.


Model

در واقع بار اصلی معماری MVC بر عهده این بخش است. این بخش می تواند با داده ها در ارتباط باشد. الزاماً منظور از داده حتما ارتباط با پایگاه های داده همچون MSSQL و Access و … نیست، حتی منبع داده ها در بخش Model می تواند یک آرایه از اعداد و یا هر چیز دیگری باشد.

همچنین Model وظیفه چک کردن داده ها جهت صحت درستی داده ها را هم بر عهده دارد (در این زمینه همکاری بیشتری با بخش Controller دارد) و همینطور وظایف دیگری که در مثال ها ی عملی که در آینده خواهم زد بیشتر آشنا خواهید شد.

View

این بخش که در واقع همان بخش Presentation Layer در معماری ۳ لایه میباشد وظیفه بر قراری ارتباط با کاربر نهایی و گرفتن داده از کاربر و نمایش داده های اماده با کاربراز طریق برقراری ارتباط با دو بخش دیگر یعنی Model و controller است.

در واقع نکته مهمی که در بخش View باید مد نظر داشت این است که این لایه مسئول کنترل صحت داده های وارد شده از طریق کاربر و همچنین مسئول صحت داده های نشان داده شده به کاربر نیست.

در واقع این بخش با داده های خام کار میکند. یک مثال ساده خیلی از برنامه نویسان هنگامی که در فرم Login برنامه ،کاربر کلمه عبور خود را وارد میکند ، در همان فرم Login اقدام به چک کردن پسورد مبنی بر صحت آن و … می کنند .

که این عمل در معماری MVC قابل قبول نیست. در واقع برای حل مسئله فوق در معماری MVC در فرم Login هنگامی که کاربر کلمه عبور را وارد کرد و دکمه Login یا ورود را زد، کلمه عبور داده شده بدون هیچ گونه اعمالی اعم از Encrypt کردن و … به بخش های دیگر فرستاده میشود و فقط یک نتیجه ساده مبنی بر این که کاربر اجازه ورود دارد یا خیر را از بخش های دیگر دریافت میکند که بر اساس آن اجازه ورود کاربر به برنامه داده میشود .

Controller

این بخش همانطور که از اسم آن مشخص است یک بخش کنترل کننده می باشد، و در واقع واسطی بین دو بخش Model و View میباشد. حال ببینیم روند اجرای برنامه در معماری MVC به چه نحوی خواهد بود.

در معماری MVC روند کلی برنامه به این شکل است که کاربر تقاضای خود را از طریق واسط های برنامه نویسی (نظیر Form ها و User Control ها و .. ) از برنامه (از بخش View)درخواست می کند. بخش View در خواست ها را به بخش Controller فرستاده و این بخش با برقراری ارتباط با بخش Model در خواست های کاربر را پردازش کرده و پس از پایان پردازش زمانی که خروجی درخواست داده شده آماده گردید بخش Controller بخش View را آگاه می سازد تا خود را بر اسا س تغییرات جدید که اصطلاحاً در معماری MVC به آن حال Model می گویند، به روز سازد.

در واقع چیزی که باعث میشود تا بخش Controller به بخش View اطلاع دهد که باید حالت جدید model را دریافت کند و خود را Update کند این است که بخش View باید قبلا خودش را در بخش Model اصطلاحا Register کرده باشد که البته عمل Register کردن توسط بخش Controller انجام میگیرد. نحوه register کردن بخش View به معماری آن محیط و همچنین زبانی که توسط آن برنامه را گسترش میدهید و همچنین قابلیت های آن زبان بستگی دارد.

مزیت های برنامه نویسی بر مبنای معماری MVC

  • با تقسیم یک برنامه به سه قسمت مدل، نمایشگر و کنترلگر، مدیریت برنامه یا پروژه را ساده تر می کند.
  • از ViewState و فرم های سروری استفاده نمی کند و از این نظر برای برنامه نویسانی که تسلط کامل بر رفتار برنامه را می خواهند عالی است.
  • برای برنامه های پشتیبانی شده توسط تیم های بزرگ برنامه نویسان که کنترل بسیار بر رفتار برنامه را می خواهند، بهتر کار می کنند.
  • از الگوی کنترلگر جلو استفاده می کند که درخواست های برنامه را توسط یک کنترلگر پردازش می کند. این مسئله باعث می شود تا بتوانیم برنامه هایی را طراحی کنیم که از زیر ساخت های غنی مسیر یابی پشتیبانی می کند.
  • پشتیبانی بهتری از طراحی و توسعه آزمون محور دارد.

 

کدام فریم ورک ها بر پایه MVC هستند؟

  • asp.net دیگر کنار رفته است و asp.net mvc آمده است که در آن با معماری mvc کد c# می زنید و از توسعه وب لذت می برید.
  • php به دلیل متن باز بودن فریم ورک های mvc زیادی دارد که در زیر نام می برم که درحال حاظر لاراول محبوب ترین فریم ورک php است.
  • python هم فریم ورک معروفی برای کد نویسی در وب دارد که از معماری mvc استفاده می شود.  django و Pyramid دو  فریم ورک محبوب پایتون mvc هستند.
  • برنامه نویسی روبی که همه نام آن را با rails شنیده اند. جالب است بدانید که rails یک framework بر پایه mvc است. اگر با ruby on rails اشنا نیستید بدانید تویتر و soundcloud و git hob و بسیارب از  سایت های خوب و مدرن از ruby on railsبهره برده اند.
  •  فریمورک AngularJS بخوبی معماری MVC را در سطح client پیاده سازی می کند ، که باعث ساده تر شدن توسعه و خطایابی برنامه های تحت وب می شود.