تعریف علمی و تخصصی
در مهندسی نرمافزار، مدل-نما-کنترلگر (Model–View–Controller) یا مدل MVC به یک الگوی معماری نرمافزار اطلاق میشود. الگوی معماری مدل MVC به جداسازی دادههای کاربردی (مانند محتویات بخش مدل) از مؤلفههای ارائهشده بهصورت گرافیکی (بخش نما) و منطق مربوط به پردازش ورودیها (بخش کنترلگر) اقدام مینماید. هدف الگوی معماری امویسی صرفاً یکپارچگی در معماری نرمافزار است و به کمک آن به دست گیری نرمافزار در راستای مدیریت و توسعه به سهولت انجام میگیرد.
تعریف ساده
بهطور سادهتر میتوان گفت که هر وقت قرار است سیستم بزرگی پیادهسازی شود، پیادهسازی آن سیستم بدون جداسازی قسمتهای مختلف آن موجب پیچیدگی و گنگ بودن آن سیستم خواهد شد. پس بهتر است مجموعه کارهای آن سیستم را به زیر سیستمهای دیگر تقسیم کنیم.
یکی از معماریهای معروف در طراحی الگو، امویسی نام دارد. بهموجب این الگو کل سیستم باید به سه زیرسیستم تقسیم گردد.
• مدل: پایینترین سطح الگو، قسمتی است که مسئول نگهداری دادههاست.
• نما: این قسمت مسئولیت نمایش دادهها به کاربر را بر عهده دارد.
• کنترلگر: برنامه ایست که دادوستدهای بین مدل و نما را کنترل میکند.
از ویژگیهای این سیستم جدا سازی لایه منطق کاربردی از لایه واسط کاربری است. در این مدل کنترلگر تمام درخواستها را از کاربر گرفته سپس با مدل شروع به کار میکند تا دادههای موردنیاز برای نمایش را تولید کند.
مزایای معماری MVC:
• وضوح طراحی: به خاطر ارتباط مناسب مدل و دادهها در API هایی که با این روش پیاده میشوند و ساختار مناسب این روش، پیاده سازی و طراحی برنامهها بسیار سادهتر میشود.
• ماژول بندی کار آمد: در طراحی این سبک سیستمها اجازه جابهجایی ساده مؤلفهها بین کاربران بر اساس قصد برنامه نویس داده شده است. در این سیستمها تغیر در یک جنبه از برنامه بر روی دیگر قسمتهای برنامه تأثیر نمیگذارد و پیاده سازی جنبههای مختلف برنامه بهصورت موازی قابل اجرا است.
• نمایش چندگانه: برنامه میتواند مقادیر موجود در مدل را در جاهای مختلف نمایش دهد. گاهی اوقات یک داده در قسمتهای مختلف برنامه مورد استفاده قرار میگیرد. در این مواقع با استفاده از مدل میتواند از جابهجایی اضافه دادهها بین کاربر و سرویس خودداری کرد.
• سهولت توسعه فرایند: کنترلگر و نما با بهبود مدل با کمترین تغییر قابل توسعه و بهبود هستند.
معایب معماری MVC:
• پیچیدگی پیاده سازی: گاهی اوقات این الگوی طراحی و پیاده سازی را دچار پیچیدگیهای خاصی میکند.
• نامناسب بودن برای برنامههای کوچک: این الگوی طراحی برای برنامههای کوچک اصلاً مناسب نیست و معمولاً حجم کاری را افزایش داده و کارکرد سیستم را کاهش میدهد.
جزییات بیشتر در مورد نحوهی کار MVC در قالب چند مثال در مقالات آتی ارائه میشود.