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

الگوی معماری مدل‌نمای کنترل‌کننده (MVC) چیست؟

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

الگوی معماری یک اسکیما (طرح) و ساختاری برای سیستم‌های نرم‌افزاری ارائه می‌کند. الگوی معماری مجموعه‌ای از سامانه‌های از پیش تعریف شده، وظایف، قواعد و خط‌دهی‌هایی است که برای سازمان‌دهی ارتباط میان عناصر مختلف استفاده می‌شود. بر همین اساس الگوی معماری را می‌توان مفهومی توصیف کرد که برخی از عناصر منسجم و اساسی در یک معماری نرم‌افزاری را ترسیم می‌کند. درست است که الگوی معماری راه‌حلی کلی با رویکرد قابلیت استفاده مجدد برای یک مسوله فرموله شده در ارتباط با معماری نرم‌افزار است.

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

در معماری فوق Model: این لایه تمامی داده‌ها و منطبق مرتبط با داده‌ها را توصیف می‌کند. مدل پایین‌ترین سطح در ساختار معماری برنامه کاربردی است. به این معنا که لایه مدل مسئولیت نگه‌داری و مدیریت منطقی داده‌ها را بر عهده‌ دارد. مدل به بانک‌اطلاعاتی متصل می‌شود، بنابراین هر تعاملی که با داده‌ها انجام می‌شود نظیر اضافه کردن یا دریافت داده‌ها در بخش مدل انجام می‌شود.

در معماری فوق View: نما همان قالب HTML است که پس از رسیدگی به درخواست کاربر بازگردانده می‌شود. به بیان دقیق‌تر، داده‌ها را به کاربر نمایش می‌دهد و امکان تعامل کاربر با برنامه کاربردی را فراهم می‌کند. بازنمایی داده‌ها به وسیله لایه نما انجام می‌شود. نما در اصل برای کاربر یک رابط کاربری ایجاد می‌کند. بنابراین، در ارتباط با کاربردهای وب، می‌توان مولفه نما را همان بخش HTML و CSS توصیف کرد. نماها به وسیله داده‌ها ایجاد می‌شوند و داده‌ها توسط مولفه مدل گردآوری می‌شوند.

الگوی معماری MVC چیست؟

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

چرا باید از الگوی MVC استفاده کنیم؟

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

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

زمانی که مشترین ساندویچش را سفارش می‌دهد، ایده تصویر دقیقی از محصول نهایی را مدنظر دارد که یک ساندویچ همبرگر است. این مسئله درست، همانند حالتی است که کاربری به بازدید از سایتی می‌پردازد. به‌طور مثال، در توییتر با فشار دکمه دنبال‌کنندگان فهرستی از افرادی که دنبال‌کرده‌اید یا دنبال‌کننده شما هستند را مشاهده می‌کنید. بنابراین، کاربر انتظار دارد با انتخاب گزینه دنبال‌کنندگان، فهرستی از کاربران را مشاهده کند. زمانی‌که کاربر دکمه دنبال‌کنندگان را انتخاب می‌کند درخواستی برای سرورهای توییتر ارسال می‌کند. این درخواست برای خدمت‌دهدی و نمایش فهرست دنبال‌کنندگان ارسال می‌شود. درست مثال با زمانی که مشتری سفارشی خود را به فروشنده‌ای که نقش کنترل‌کننده را دارد اعلام می‌کند. در ادامه، درخواست کاربر به سرورهای توییتر می‌رسد. درخواست به کنترل‌کننده تحویل داده شده و کنترل‌کننده سرور درخواست را پردازش می‌کند. در ادامه کنترل‌کننده سرور تمام دنبال‌کنندگان را از بانک اطلاعاتی استخراج می‌کند، درست همانند زمانی که فرشونده ساندویچ (مدل) مواد اولیه را انتخاب می‌کند. این مننابع (داده‌های فهرست دنبال‌کنندگان) در قالب یک پاسخ جمع‌آوری می‌شوند. رویکرد فوق مشابع زمانی است که فروشنده ساندویچ تمام مواد اولیه را با هم ادغام می‌کند و داخل ساندویچ (نما) قرار می‌دهد. در انتها، فهرست دنبال‌کنندگان به کاربر نشان داده می‌شود، مشابه حالتی که فروشنده ساندویچ آماده شده را به مشتری تحویل می‌دهد.

ویژگی‌های مهم الگوی معماری MVC

از مهم‌ترین ویژگی‌های معماری فوق به موارد زیر می‌توان اشاره کرد:

آزمایش‌پذیری ساده و کم دردسر

مدیریت و کنترل کامل روی HTML و آدرس‌های اینترنتی در حوزه وب

به‌کارگیری هوشمندانه ویژگیرهای موجود در ASP.NE، JSP، Django و سایر موارد مرتبط با MVC

مسیریابی آدرس اینترنتی برای آدرسرهای اینترنتی سازگار با سئو و ترسیم آدرس‌های اینترنتی قدرتمند که قابلیت جست‌وجوها را افزایش میردهند.

تفکیک واضح منطق وظایف برنامه کاربردی در قالب مدل، نما و کنترل‌کننده

پشتیبانی از توسعه آزمون‌محور (Test Driven Development)

از مهم‌ترین چهارچوب‌های مبتنی بر MVC می‌توان به Ruby On Rails، Django، CakePHP، Yii، CherryPy، Spring MVC، Catalyst، Rails، Zend Framework، CodeIngniter، Laravek، Fule PHP و سیمفونی اشاره کرد.

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

1607870047_0.gif

ایسوس

نظر شما چیست؟