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

در این مقاله قصد داریم معماریMVCرا برای شما عزیزان به طور کامل شرح دهیم کلمه MVC مخفف Model View Controller است، در واقع یک نوع از انواع معماری های برنامه نویسی برای طراحی نرم افزار به زبان های مختلف برنامه نویسی می باشد. این معماری از سه بخش اصلی تشکیل شده است.همانطور که از نامش پیداست میتوان سه بخش اصلی تشکیل دهنده این معماری را تشخیص داد. به عبارت دقیق تر برنامه را به سه بخش منطقی تقسیم می کند: بخش مدل، نمای و کنترل کننده. برای رابط های کاربری گرافیکی دسکتاپ استفاده می شد اما امروزه در طراحی اپلیکیشن های موبایل و اپلیکیشن های وب استفاده می شود.الگوی MVC یک الگوی معماری است به این معنی که بر کل معماری برنامه ها حاکم است. اگرچه اغلب به عنوان الگوی طراحی شناخته می شود، اما اگر آن را فقط به عنوان یک الگوی طراحی معرفی کنیم ممکن است اشتباه کنیم، زیرا الگوهای طراحی برای حل یک مشکل فنی خاص استفاده می شود، در حالی که الگوی معماری برای حل مشکلات معماری استفاده می شود، بنابراین کل آن را تحت تأثیر قرار می دهد. معماری برنامه مادارای سه جزء اصلی است:-مدل-چشم انداز-کنترل کنندهو هر کدام وظایف خاصی دارندبخش اول نام یعنیModel برای مدل سازی و ارتباط با پایگاه داده، بخش دوم View برای نمایش رابط کاربری نرم افزار و خروجی نهایی به کاربر و در نهایت بخش سوم یعنی Controller برای دریافت درخواست های ارسالی کاربر که در نرم افزار های تحت وب از طریق پرتکل http می باشد و ارسال اطلاعات دریافت شده از پایگاه داده به رابط کاربری نرم افزار می باشد. Modelبه عنوان پایین ترین سطح شناخته می شود که به این معنی است که مسئولیت نگهداری داده ها را بر عهده دارد. داده ها را به صورت منطقی مدیریت می کند. مدل در واقع به پایگاه داده متصل است، بنابراین هر کاری که با داده ها انجام دهیم مثل افزودن یا بازیابی داده ها در قسمت مدل انجام می شود. به درخواست های کنترلر پاسخ می دهد زیرا کنترل کننده هرگز به تنهایی با پایگاه داده ارتباط ندارد. مدل به صورت رفت و برگشت با پایگاه داده صحبت می کند و سپس داده های مورد نیاز را به کنترل کننده می دهد. Viewنمایش داده ها توسط view انجام می شود. در واقع UI یا رابط کاربری را برای کاربر ایجاد می کند. بنابراین در برنامه های کاربردی وب وقتی راجب view حرف میزنیم منظورمان همان کد های HTML/CSS است .نماها توسط داده‌هایی ایجاد می‌شوند که توسط مدل جمع‌آوری می‌شوند. Controllerبه عنوان عضو اصلی شناخته می‌شود زیرا کنترل‌کننده مؤلفه‌ای است که ارتباط بین نماها و مدل را امکان‌پذیر می‌کند، بنابراین به عنوان یک واسطه عمل می‌کند. کنترلر لازم نیست نگران مدیریت منطق داده باشد، فقط به مدل می گوید که چه کاری انجام دهد. پس از دریافت داده‌ها از مدل، آن را پردازش می‌کند و سپس تمام آن اطلاعات را می‌گیرد که آن را به view ارسال می‌کند و نحوه نمایش آن را برای کاربر توضیح می‌دهد.توجه: نماها و مدل ها نمی توانند مستقیم صحبت کنند.الگوی MVC به شما کمک می کند تا کدهای فرانت اند و بک اند را به اجزای جداگانه تقسیم کنید. بنابراین ، مدیریت و ایجاد تغییرات در هر دو جهت بدون تداخل با یکدیگر بسیار آسان تر است.درواقع MVC یک معماری است که برنامه شما را به اجزای کوچکتر تقسیم می کند. مدل با داده ها و منطق سیستم شما سروکار دارد. نما فقط داده ها را نمایش می دهد و کنترلر ارتباط بین مدل و نما را حفظ می کند.تاریخچهبرای اولین بارTrygve Reenskaug MVC را اختراع کرد. اولین گزارش‌ها در مورد MVC زمانی نوشته شد که او از یک دانشمند در آزمایشگاه تحقیقاتی زیراکس پالو آلتو (PARC) در سال 1978/1979 بازدید کرد. در ابتدا، MVC "ویرایشگر نمایش مدل اشیاء" نامیده می شد اما به سرعت آن را به "کنترل کننده نمای مدل" تغییر داد.هدف Tygrve حل مشکل کنترل یک مجموعه داده بزرگ و پیچیده توسط کاربران بود. روش MVC در طول سال ها تغییر کرده است. از آنجایی که الگوی MVC قبل از مرورگرهای وب اختراع شد، در ابتدا به عنوان یک الگوی معماری برای رابط های گرافیکی کاربر (GUI) استفاده شد.مزایای MVC:توسعه و اشکال‌زدایی برنامه سریع‌تر میشه برنامه‌نویس‌های بخش های مختلف می‌تونن همزمان برنامه رو توسعه بدن. برای مثال بطور همزمان یک برنامه‌نویس frontend می‌تونه روی ویوو، و یه برنامه‌نویس backend دیگه روی منطق برنامه کار کنه.اطلاعات مدل از فرمت خاصی تبعیت نمیکنه با توجه به بدون فرمت بودن اطلاعاتی که از مدل گرفته میشه، یک ویوو می‌تونه یک صفحهHTML باشه، یا یک صفحه PDF یا یک اپ دسکتاپ و یا یک وبسایت یا اپ موبایل دیگه که از API ما استفاده می‌کنه.می‌تونیم برای یک مدل، چند تا ویوو داشته باشیم مثلا مدلUser می‌تونه چندین ویوو مختلف برای نمایش کاربرا داشته باشه. که باعث میشه کدهای تکراری حذف بشن. چون برای مدل مهم نیست که اطلاعاتش کجا و به چه صورت داره استفاده میشه.معماری MVC رابط کاربری را از منطق تجاری جدا می کندسادگی در نگهداریاجزای مختلف برنامه در MVC می توانند به طور مستقل ، مستقر و نگهداری شوند.این معماری به تست اجزای مستقل کمک می کند.معایب MVC:باعث افزایش پیچیدگی میشه اگه برنامه‌ی ما کوچیک هست نیازی به اعمال معماری‌ها و الگوها نیست.رابطه نزدیک ویوو و کنترلر چون کنترلر یک رابط بین مدل و ویوو هست، قابلیت استفاده مجدد کنترلرها خیلی کمتر هست.نتیجه گیری : درک MVC آنقدرها هم آسان نیست، واقعاً سخت است، اما یادگیری آن غیرممکن نیست و هر توسعه‌دهنده‌ای باید آن را در هنگام توسعه یک برنامه در نظر داشته باشد. فقط به خاطر داشته باشید که MVC یک معماری است که نرم افزار شما را به اجزای کوچکتر تقسیم می کند. این مدل با داده ها و منطق سیستم شما سروکار دارد. View فقط داده ها را نمایش می دهد و کنترلر ارتباط بین مدل و نما را حفظ می کند. این "تقسیم" خوانایی و بودن را امکان پذیر می کند و همچنین بخش تست را آسان تر می کند.معماری MVC روند توسعه نرم افزار را بسیار اصولی تر پیش خواهد برد. زیرا لایه های مختلف برنامه را از یکدیگر جدا کرده است. و در آینده برای انجام تغییرات جزئی و کلی و یا حتی اضافه کردن یک ویژگی جدید به برنامه کار بسیار آسان تر و سریع تر از حالتی است که از معماری MVC در آن برنامه استفاده نشده باشد.امیدوارم این مطالب براتون مفید باشه و به دانشتون افزوده باشهگرداورنده:محدثه رستگارمنابع: https://www.quora.com/ https://techtip.ir/ استاد:دکتر مریم حاجی اسمعیلی.دکترای علوم کامپیوتر از دانشگاه کینگستون لندن Dr.Maryam HajiesmaeiliPhD of computer science from Kingston university of Londonhttps://ir.linkedin.com/dr-maryam-hajiesmaeili-90930743