برنامه نویسان بهتر است وقت خود را روی حل مشکلات و چالش های جدید بگذارند. متاسفانه بسیاری از مسائل تکراری و غیرضروری در هنگام اجرای پروژه وقت برنامه نویسان را می گیرد. همینطور توسعه و نگهداری نرم افزارهایی که از یک الگو یا معماری خاص پیروی نمی کنند، مشکل است. وجود معماری های مختلفی مثل MVC، MVP یا MVVP کمک می کنند پیچیدگی های برنامه تا حد ممکن کم شوند و فرآیند توسعه نرم افزار افزایش پیدا کند. معماری یک نرم افزار به تعریف ساختار بندی کلی سیستم و ارتباط آن با سایر بخش ها اشاره دارد. هر معماری شامل الگوهای (Pattern) مختلفی است که با توجه به نوع پیاده سازی نرم افزار انتخاب می شوند. پترن هایی مانند MVP به نوعی زیرشاخه معماری نرم افزار محسوب می شوند. این الگوها مانند یک نقشه راه برای توسعه دهنده عمل می کنند و اجازه نمی دهند که او گرفتار تکرار شود. انتخاب معماری نرم افزاری که قصد پیاده سازی آن را دارید باید به گونه ای باشد که نیازمندی های فنی و عملیاتی سیستم را به خوبی تامین کند.
الگوی معماری MVC چیست؟
مدل MVC نوعی معماری نرم افزار است که از 3 بخش تشکیل شده است :
- Model : این بخش رابط بین ویو و کنترلر است. مدل خود نیز شامل زیربخش های Data Model، Business Model و View Model است که وظایفی مانند دریافت و ذخیره اطلاعات، تعامل با داده ها، ارسال اطلاعات و شکل دهی منطق سیستمی را به عهده دارند.
- View: ویو بخشی است که رابط بین کاربر و نرم افزار است و تعامل بین این دو بخش را کنترل می کند.
- Controller: کنترلر رابط بین دو بخش گفته شده است و برای مدیریت درخواست ها و عملیات های مبتنی بر منطق به کار گرفته می شود.
در یک مثال ساده می توان کارکرد این معماری را به این شکل توضیح داد که شما آدرس وب سایتی را در مرورگر وارد می کنید. سرور کنترلر مناسب را فراخوانده و کنترلر نیز با هماهنگی ویو و مدل، پاسخ مناسب با درخواست شما را تحویل می دهد.
MVC میتواند در جایی که توسعه موازی مورد نیاز است استفاده شود. این بدان معنی است که افراد مختلف میتوانند به طور همزمان بر روی اجزای مختلف کار کنند بدون این که دیگران را تحتتاثیر قرار دهند یا مسدود کنند. یک مثال معروف تقسیم توسعه دهندگان جلو و عقب است
هدف و انگیزه هدف از MVC جدا کردن رابط کاربر (رابط کاربری)و دادههای اساسی (منطق کسبوکار)است. این به این معنی است که هر جز یک چیز را انجام میدهد و میتواند بدون تاثیر بر دیگر اجزا تغییر کند. این رشته، جداسازی نگرانیها در علوم کامپیوتر را رفع میکند.