MVC چیست؟ اگر برنامه نویس باشید یا قصد شروع برنامه نویسی را داشته باشید، حتما واژه MVC را شنیده‌اید. معماری MVC مخفف کلمات Model View Controller (مدل ویو کنترلر) است. شاید برای شما نیز سوال باشد که معماری MVC چیست و چه کاربردی دارد؟ در این مقاله از دولوپر شو به بررسی MVC می‌پردازیم.

در این مقاله با موضوعات زیر آشنا خواهیم شد:

  • MVC چیست؟
  • کاربرد MVC با مثالی از دنیای واقعی
  • نحوه کار معماری MVC در برنامه نویسی چگونه است؟
  • برنامه نویسی با MVC
  • نقش اجزای الگوی معماری MVC چیست؟
  • وظیفه Model در معماری MVC چیست؟
  • وظیفه View در معماری MVC چیست؟
  • وظیفه Controller در معماری MVC چیست؟
  • برنامه نویسی بدون MVC
  • مزایای معماری MVC چیست؟
  • معایب معماری MVC چیست؟
  • چه فریمورک‌هایی از معماری MVC استفاده می‌کنند؟

MVC چیست؟

MVC یک الگوی معماری نرم‌افزار است که مخفف کلمات Model View Controller است. این سه بخش نرم‌افزای همیشه باهم در ارتباط هستند. در حقیقت Model وظیفه ارتباط با پایگاه داده را برعهده دارد. نقش View، نمایش اطلاعات برای کاربر است و Controller رابط بین Model و View است. یعنی اطلاعات را از Model می‌گیرد و جهت نمایش به View ارسال می‌کند.

حال فهمیدیم MVC چیست؟ در ادامه مقاله برای درک بهتر مفهوم MVC یک مثال کاربردی می‌زنیم تا این موضوع را بهتر درک کنید.

کاربرد MVC با مثالی از دنیای واقعی

در تعریف MVC متوجه نقش View ،Model و Controller شدیم. حال در اینجا یک مثال کاربردی از MVC در دنیای واقعی می‌زنیم تا بهتر متوجه نقش مدل، ویو و کنترلر شوید.

یک رستوران را در نظر بگیرید. وقتی مشتری وارد رستوران می‌شود، بر روی میز غذاخوری یک منوی غذا وجود دارد. مشتری عذای مورد علاقه خود را انتخاب می‌کند و سپس به گارسون غذاخوری می‌گوید که غذای مورد نظرش را انتخاب کرده است. گارسون به سمت آشپزخانه می‌رود و سفارش غذای مشتری را به آشپز رستوران می‌رساند. وقتی غذا آماده شد، گارسون آن را از آشپزخانه تحویل گرفته و به سمت مشتری می‌رود و غذای او را تحویل می‌دهد.

در این مثال مشتری در نقش درخواست کننده غذا، آشپزخانه در نقش Model، غذا در نقش View و گارسونی که سفارش غذا را به سمت آشپزخانه می‌برد و آن را تحویل می‌گیرد و به سمت مشتری می‌برد در نقش Controller است. در سوال MVC چیست؟ گفتیم که وظیفه Controller ارتباط میان Model و View است. مشتری کاری به نحوه پخت و پز غذا (View) ندارد. فقط غذا (View) را به گارسون (Controller) سفارش می‌دهد و گارسون سفارش غذا به سمت آشپزخانه (Model) می‌برد و بعد از آماده شدن غذا (View)، آن را تحویل مشتری می‌دهد.

حال که با مفهوم MVC بیشتر آشنا شدیم در قسمت بعد ببنیم که کاربرد MVC در برنامه نویسی چیست؟ پس در ادامه با ما همراه باشید.

معماری MVC چگونه کار می‌کند؟

نحوه کار معماری MVC در برنامه نویسی چگونه است؟

در قسمت قبل با سوال MVC چیست؟ با مثالی از رستوران آشنا شدیم. در این قسمت مفهوم MVC در برنامه نویسی را با مثالی از یک سایت واقعی بررسی می‌کنیم.

یک کاربر را در نظر بگیرید که پشت سیستم نشسته است. این کاربر در مرورگر خود آدرس سایت https://developersho.com را تایپ می‌کند و می‌خواهد باز زدن دکمه Enter وارد سایت دولوپرشو شود. وقتی کاربر با وارد کردن آدرس سایت، دکمه Enter را می‌زند، این درخواست وارد Router شده و از آنجا به سمت Controller هدایت می‌شود. این Controller اطلاعات مربوط به آن آدرس را از Model می‌گیرد و آن را در مرورگر کاربر (View) نمایش می‌دهد.

پس اطلاعات موجود در صفحه در نقش (View) است که در پایگاه داده ذخیره شده است. کاربر وقتی آدرس سایت را وارد می‌کند در حقیقت درخواست نمایش اطلاعات را به سمت Controller می‌فرستد و Controller آن اطلاعات را از Model می‌گیرد و سپس در مرورگر کاربر (View) به نمایش می‌گذارد.

پس تا اینجای کار با سوال معماری MVC چیست؟ با مثالی از رستوران و سایت واقعی بیشتر آشنا شدیم. در قسمت بعد ببینیم که آیا برنامه نویسی بدون MVC هم امکان‌پذیر است یا حتما باید برنامه نویسی با MVC باشد؟ پس در ادامه نیز با ما همراه باشید.

برنامه نویسی با MVC

در برنامه نویسی با معماری MVC، سه بخش جداگانه با نام‌های Model - View - Controller داریم. این سه بخش هر کدام وظیفه خاص خود را بر عهده دارند اما همیشه با هم در ارتباط هستتند تا برنامه به درستی کار کند. معماری ام وی سی باعث تمیز شدن کدها و راحت شدن کار برنامه نویس موقع دیباگ می‌شود. در پایین نقش هر بخش و کدهای مربوط به آن را بررسی می‌کنیم.

اجزای معماری MVC

نقش اجزای الگوی معماری MVC چیست؟

در این قسمت وظیفه هر بخش از الگوی معماری MVC را بررسی می‌کنیم.

وظیفه Model در معماری MVC چیست؟

یک پوشه برای فایل‌های Model که وظیفه ارتباط با دیتابیس را برعهده دارند و شامل دستورات SQL هستند. عملیات CRUD با دستورات SQL در این قسمت قرار دارند. برای مثال یک محصول سایت را در نظر بگیرید. C همان Create یا ایجاد یک محصول در پایگاه داده است. R همان Read یا خواندن آن محصول برای نمایش در صفحه سایت است. U همان Update یا ویرایش کردن آن محصول است. D همان Delete یا حذف آن محصول از پایگاه داده است.

وظیفه View در معماری MVC چیست؟

پوشه دیگر برای مرتب سازی فایل‌های View که وظیفه نمایش اطلاعات به کاربر را بر عهده دارند و معمولا شامل کدهای CSS ،HTML و JavaScript هستند. نمایش اطلاعات به کاربر معمولا با دستور SQL برای Read یا نمایش اطلاعات است. نمایش اطلاعات از پایگاه داده به وسیله Controller به مرورگر کاربر ارسال می‌شود.

وظیفه Controller در معماری MVC چیست؟

یک پوشه جداگانه نیز برای فایل‌های Controller وجود دارد که این فایل‌ها بیشتر منطق کد نویسی را بر عهده دارند و شرط و شروط نمایش اطلاعات از Model برای ارسال به View در این قسمت قرار می‌گیرد. همچنین وقتی مدیر سایت یک محصول فروشگاهی را می‌خواهد از سایت حذف یا ویرایش کند، در View روی آن کلیک می‌کند و از طریق Controller این عملیات به سمت Model برای ویرایش یا حذف ارسال می‌شود و بعد از انجام عملیات، نتیجه آن از طریق Controller به سمت View ارسال می‌شود و کاربر تغییرات آن را در مرورگر خود می‌بیند.

برنامه نویسی بدون MVC

در قسمت‌های بالا با کاربرد MVC در برنامه نویسی و برنامه نویسی با الگوی MVC آشنا شدیم. در این قسمت ببنیم آیا بدون MVC برنامه نویسی امکان‌پذیر است؟ در جواب باید بگوییم که بله امکان‌پذیر است. وقتی برنامه نویسی با معماری MVC نباشد، در این صورت باید تمام عملیات Model View Controller باید در یک فایل انجام شود و در سه بخش جداگانه نباشد. در این روش کدهای SQL مربوط به Model، کدهای شرطی و منطق Controller و کدهای CSS ،HTML و JavaScript مربوط به View در یک فایل قرار دارند.

وقتی همه‌ی کدهای مدل - ویو -کنترلر در یک فایل باشند، باعث به هم ریختگی و کثیف شدن کدها شده و اصول کد نویسی تمیز رعایت نمی‌شود. در هنگام دیباگ و رفع مشکلات کد نیز کار برنامه نویس سخت می‌شود.

حال که با سوال MVC چیست و چه کاربردی دارد؟ بیشتر آشنا شدیم. در ادامه به مزایا و معایب معماری MVC می‌پردازیم.

مزایای معماری MVC چیست؟

در این بخش از مقاله «MVC چیست؟» به مزایای MVC در برنامه نویسی می‌پردازیم.

  1. سرعت توسعه: الگوی معماری MVC باعث می‌شود هر کد در جایگاه مربوط به خودش باشد و نظمی که ایجاد می‌شود باعث افزایش سرعت توسعه کدها می‌شود.
  2. افزایش خوانایی کد: در الگوی معماری MVC به علت مرتب سازی و تمیز بودن کدها، خوانایی کدها بالاتر می‌رود.
  3. آسان‌تر شدن دیباگ کد: در معماری MVC اگر مشکلی در کد (باگ) ایجاد شود، به دلیل ساختار مناسب و منظم، مشکل کد سریع‌تر رفع می‌شود.
  4. تقسیم کاری بین توسعه‌دهندگان: در الگوی MVC می‌توان به هر توسعه‌دهنده دسترسی لازم به آن بخش را داد. برای مثال توسعه‌دهنده Front-End به بخش View دسترسی دارد و نیازی نیست کدهای بخش Back-End مانند Model و Controller را مشاهده کند. توسعه‌دهنده Back-End نیز به بخش Model و Controller دسترسی دارد و نیازی نیست بخش view که مربوط به توسعه‌دهنده Front-End است را مشاهده و دستکاری کند. در صورتی که MVC نبود همه‌ی کدها در یک فایل بودند و همه‌ی توسعه‌دهندگان می‌توانستند کدها را دستگاری و ویرایش کنند که باعث به وجود آمدن مشکلات اساسی می‌شد.

معایب معماری MVC چیست؟

در این بخش از مقاله «MVC چیست؟» به معایب MVC در برنامه نویسی می‌پردازیم.

  1. پیچیدگی MVC زیاد است: اگر برنامه نویس حرفه‌ای نباشد ممکن است با ساختار MVC زیاد آشنا نباشد و کار او سخت شود.
  2. مناسب نرم‌افزار کوچک نیست: اگر نرم‌افزار شما کوچک باشد و نیازی به توسعه نداشته باشد، MVC باعث افزایش پیچیدگی و کاهش سرعت برنامه خواهد شد.

چه فریمورک‌هایی از معماری MVC استفاده می‌کنند؟

حال که در مورد MVC چیست؟ اطلاعات کسب کردیم و کاربرد MVC و معایب و مزایای استفاده از MVC را شناختیم. در این قسمت چند مورد از محبوب‌ترین فریمورک‌هایی که از MVC استفاده می‌کنند را برای شما لیست می‌کنیم:

  1. Laravel
  2. ASP.NET MVC
  3. ASP.NET Core
  4. Express.js
  5. Ruby on Rails
  6. Cake PHP
  7. Codeigniter
  8. Symfony
  9. Angular JS
  10. Phalcon
  11. Zend Framework
  12. FuelPHP
  13. Blazor
  14. Spring
  15. Laminas
  16. Yii

جمع‌بندی:

در این مقاله با سوالاتی نظیر «MVC چیست؟» و «کاربرد MVC در برنامه نویسی چیست؟» آشنا شدیم. همچنین مزایا و معایب الگوی معماری MVC را بیان کردیم. اگر از الگوی MVC در برنامه نویسی استفاده کنید، علاوه بر اینکه کدهای شما بهینه‌تر و خواناتر می‌شود، برنامه نویسان نیز به راحتی می‌توانند وظایف خود را انجام دهد. مثلا توسعه‌دهنده Front-End دسترسی لازم به قسمت View دارد و توسعه‌دهنده Back-End باید دسترسی لازم به Controller و Model را داشته باشد. در این صورت دیگر نیازی نیست همه روی یک فایل کار کنند.

در این مقاله سعی کردیم الگوی MVC را به ساده‌ترین نحو ممکن توضیح دهیم. اگر با خواندن این مقاله، هرگونه ابهامی درباره معماری MVC داشتید، لطفا در قسمت نظرات با ما در میان بگذارید تا به آن پاسخ دهیم.