معماری mvc چیست؟برنامه نویسی MVC در php و laravel چه کاربردی دارد؟

معماری mvc چیست؟برنامه نویسی MVC در php و laravel چه کاربردی دارد؟
آکادمی آی تی
آکادمی آی تی
dots

معماری mvc چیست؟برنامه نویسی MVC در php و laravel چه کاربردی دارد؟

زمان مورد نیاز برای مطالعه 5 دقیقه

معماری mvc چیست؟برنامه نویسی MVC در php چه کاربردی دارد؟ آیا ام وی سی بهترین روش برنامه نویسی است؟mvc در لاراول چیست؟مقایسه الگوهای معماری: MVC ،MVP و MVVM

دپارتمان ‌ها: آموزش برنامه نویسی
1399/03/05
10,997 بازدید

ابتدا در پاسخ به سوال mvc چیست می‌توان گفت که معماری MVC یک الگو نرم‌افزاری است که آن برنامه را به سه قسمت اصلی که شامل نما، کنترلر و مدل باشد تقسیم می‌کند. هر یک از این مؤلفه‌ها برای رسیدگی به جنبه‌های مختلف توسعه خاص یک برنامه ساخته شده‌اند.

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

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

 

اجزای تشکیل‌دهنده‌ی معماری MVC چیست؟

 

مدل (Model)

مؤلفه Model با منطق مربوط به داده‌ها که کاربر با آنها کار می‌کند سرو‌کار دارد. این می‌تواند داده‌هایی باشد که بین اجزای View و Controller یا سایر داده‌های مرتبط با منطق تجاری منتقل می‌شود. به عنوان مثال، یک شی مشتری، اطلاعات مشتری را از پایگاه داده بازیابی می‌کند، آن را دستکاری کرده و داده‌ها را دوباره در پایگاه داده به روز می‌کند یا از آن برای ارائه داده استفاده می‌کند.

 

نما (View)

View برای UI برنامه استفاده می‌شود. به عنوان مثال، نمای مشتری شامل تمام مؤلفه‌های UI مانند جعبه متن، منوی کشویی و غیره است که کاربر نهایی با آنها در تعامل است.

 

کنترل کننده (Controller)

کنترل‌کننده‌ها به عنوان واسط بین مؤلفه های Model و View عمل می‌کنند تا کلیه منطق تجارت و درخواست‌های دریافتی را پردازش کنند، داده ها را با استفاده از مؤلفه Model دستکاری کرده و با Views در تعامل باشند تا نتیجه نهایی را ارائه دهد.

به عنوان مثال، کنترل‌کننده مشتری تمام تعامل‌ها و ورودی‌های مربوط به نمای مشتری را کنترل می‌کند و بانک اطلاعات را با استفاده از Model Customer به روز می‌کند. از همان کنترلر برای مشاهده داده‌های مشتری استفاده خواهد شد.

لایه های معماری mvc

 

آشنایی با ارتباطات ما بین view ، model و controller

ارتباطات این سه بخش به این صورت است که ابتدا یکسری کلاس هایی توسط بخش model برای تعامل با پایگاه داده نوشته می شود. و بخش controller بر طبق درخواست کاربر اطلاعات را از model  گرفته و به view که قابل دید کاربر است ارسال می کند. 

با تاریخچه MVC بیشتر آشنا شوید

الگوی MVC توسط Trygve Reenskaug اختراع شد. او اولین مقاله خود را در مورد MVC در سال 1978 نوشت. در ابتدا آن را الگوی ویرایشگر Thing Model View می نامید، اما او به سرعت نام این الگوی را به الگوی Model View Controller تغییر داد. 

Reenskaug در تلاش بود تا مشکل مدل سازی سیستم‌های پیچیده دنیای واقعی مانند "طراحی و ساخت یک پل بزرگ، یک نیروگاه یا یک سکوی تولید نفت خارج از ساحل" را حل کند. یک انسان دارای یک مدل ذهنی از این سیستم‌ها و یک کامپیوتر دارای یک مدل دیجیتال است. چگونه می‌توانید بین مدل ذهنی و مدل دیجیتالی ارتباط برقرار کنید؟

او در ابتدا مدل‌ها، نما‌ها و کنترل کننده‌ها را این‌گونه تعریف می‌کرد:

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

 

توضیح ساده برای mvc 

نوعی معماری برنامه نویسی که از سه بخش model، controller و view ساخته شده است. که هر کدام در راستای تکمیل پروژه باید با یکدیگر در ارتباط باشند. طوری که حتی یک اررور ساده در هر کدام از بخش ها باعث می شود تا برنامه کلا کار نکند. برای ارتباط با پایگاه داده از Model ، برای ایجاد رابط کاربری از view و از controller برای پردازش درخواست های کاربر استفاده می شود.

 

مثالی برای mvc

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

به عنوان مثال وبسایتی که با این معماری توسعه داده شده باشد. کاربر هنگام دریافت فایل یا هر درخواست دیگری که از صفحات آن وبسایت داشته باشد، ابتدا درخواست از سرور به router برنامه فرستاده می شود. و روتر یا همان مسیر یاب آن را به کنترلر/controller  مربوطه ارسال می کند. همان طور که قبلا نیز گفته شد کنترلر اطلاعات لازم را از پایگاه داده گرفته ، که این کار نیز توسط model  انجام می شود. و view ی برنامه  آن را به کاربر ارسال می کند.

 

الگوی طراحی mvc  

Mvc در برخی موارد به الگوی طراحی و در برخی دیگر به الگوی معماری تعریف می شود. اگر بحث مورد نظر برای ساخت کامپوننت باشد. به عنوان الگوی طراحی یاد می شود. اما اگر بحث معماری سیستم باشد. الگوی معماری گفته می شود. که در هر دو از سه بخش model، view و controller استفاده می شود. 

 

چه زمانی از mvc استفاده کنیم؟ 

زمانی که پروژه بزرگ باشد کار بدون معماری سه لایه یا mvc کاری سخت و پیچیده ای می شود. بنابرین در این مواقع بهترین راه استفاده از مدل mvc است. چرا که کد کمتری نوشته می شود و برنامه علاوه بر اینکه ساده می شود. مدیریت و کنترل آن به دلیل اینکه به سه قسمت مجزا تقسیم شده است بهتر و آسان می شود. 

 

مزیت های استفاده از معماری mvc

اگر تسلط کامل به mvc داشته باشید می توانید برای همیشه کد هایی که نوشته اید را در تمامی پروژه هایتان استفاده کنید. به دلیل اینکه سه تا لایه ی mvc کاملا عملکردشان جدا از هم هستند. از مزیت های مهم دیگر معماری سه لایه در زیر به آن اشاره شده است:

  • مدیریت بهتر بر روی پروژه های تیمی که هر کدام بر روی یک بخشی می توانند کار کنند. 
  • ارائه ی کتابخانه هایی با کلاس های مختلف آماده که سرعت کد نویسی را بیشتر می کند. 
  • قابلیت جدا سازی پروژه به سرعت و انعطاف بیشتر کمک می کند.

 

معایب استفاده از mvc و کمک به mvc

برای پیاده سازی  پروژه های خیلی کوچک نیاز به معماری سه لایه نیست هر چند اگر با  mvc کار شده باشد هیچ ضرری به برنامه نمی رساند. فقط تنها عیبی که می تواند داشته باشد این است که برای پروژه ای که با چند تابع ساده می توان نوشت، نیازی به معماری mvc نیست چرا که زمان بر است. مگراینکه برنامه نویس انقدر به mvc تسلط داشته باشد که بخواهد سریع تر با مدل سه لایه کار کند. این ایراد برای برنامه نویسان غیر حرفه ای بود. 

 

مزایای web form

  • ساختار مشابه با اپلیکیشن های تحت ویندوز
  • توسعه سریع تر نرم افزار نسبت به MVC
  • امکان استفاده از کنترل های تحت سرور

 

مزایای برنامه های مبتنی برmvc

  • مدیریت برنامه با mvc ساده تر می شود. 
  • پشتیبانی بهتر از طراحی و توسعه آزمون محور. 
  • استفاده نکردن از فرم های سروری باعث مسلط شدن برنامه نویس ها بر رفتار برنامه می شود. 
  • پشتیبانی از زیر ساخت های مسیر یابی به دلیل استفاده از الگوی کنترلگر.

 

مزایای برنامه های مبتنی بر وب فرم 

  • متمرکز بودن اجزای web form باعث شده از کد کمتری استفاده شود. 
  • مناسب برای تیم های کوچک، برای ساخت برنامه ی سریع 
  • استفاده از الگوی کنترلگر که باعث کارایی تابعی صفحه می شود. 

 

ویژگی های Asp.net mvc 

  • مدیریت ساده با معماری MVC 
  • پشتیبانی از آزمون TTD
  • پشتیبانی از احراز هوییت fasebook و google 
  • کنترل کامل بر بخش فرانت اند وبسایت
  • ویژگی area برای تفسیم بندی پروژه به چندین بخش

 

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

لاراول محبوب‌ترین چارچوب PHP است که توسط تیلور اتول ساخته شده است. این فریم ورک از الگوی معماری MVC استفاده می‌کند. این سیستم ویژگی‌های زیادی مانند یک سیستم تأیید هویت کامل، مهاجرت پایگاه داده، ORM ، Pagination و غیره را ارائه می‌دهد. قبل از ایجاد برنامه، شما نیاز به PHP 7.2 و MySQL دارید. 

از یک مدل برای تعامل با بانک اطلاعاتی استفاده می‌شود و البته لازم نیست حتما یک پایگاه داده باشد. این می‌تواند یک فایل JSON یا منابع دیگری باشد. یک کنترل‌کننده شامل منطقی مثلاً نحوه تأیید اعتبار داده‌های فرم و ذخیره یک منبع در بانک اطلاعاتی با تعامل از طریق Model است.

نما رابط کاربری (UI) برنامه است که حاوی HTML یا نشانه‌گذاری ارائه است. همچنین می‌تواند مانند منطق و شرایط شرطی دارای منطق باشد. موتورهای قالب برای جاسازی منطق در Views استفاده می شوند. لاراول دارای موتور قالب Blade است که برای اضافه کردن منطق در داخل نماها استفاده می‌شود. 

آموزش مرتبط: دوره پروژه محور آموزش php

مسیرها

2 پرونده مسیر در لاراول وجود دارد که اولی web.php و دیگری با نام api.php است. تمام مسیرهای وب در پرونده‌های web.php مانند mywebsite.com/about یا mywebsite.com/contact ثبت شده‌اند. و مسیرهای مرتبط با API در api.php ثبت شده است.

 

کنترلرها و مدل‌ها

همه مدل‌ها در فهرست برنامه‌ها ذخیره می‌شوند و برای احراز هویت، یک مدل کاربر پیش فرض با لاراول ارائه می‌شود. app\Http\controllers دارای تمام کنترلرها است و همچنین برخی از کنترل‌کننده‌های پیش فرض دیگر برای تأیید اعتبار نیز در این مسیر وجود دارد.

 

نماها

نماها در resources/views ذخیره می‌شود و لاراول نمای پیش‌فرض Welcome.blade.php را فراهم می‌کند. نماهای  فریمورک لاراول دارای پسوندی به نام پسوند .blade.php است بنابراین در زمان ایجاد، باید پسوند blade را اضافه کنید.

 

سایر مسیرها

دایرکتوری عمومی امکانات لازم را برای قرار دادن CSS ، js و سایر منابع ایستا در فهرست‌های عمومی فراهم می‌کند. از طرف دیگر دایرکتوری Configuration شامل کلیه پرونده‌های پیکربندی مربوط به برنامه‌ها مانند session ، بانک اطلاعاتی و سایر تنظیمات است.

mvc چیست؟

 

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

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

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

به طور خلاصه ، لاراول این کار را با دادن یک ورود به برنامه از طریق فایل index.php انجام داده و سپس با تنظیم مسیرهای تعریف شده، درخواست را به کنترلر مربوطه هدایت می‌کند.

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

 

مقایسه الگوهای معماری: MVC ،MVP و MVVM

الگوی MVP شباهت زیادی با الگوی MVC دارد. در این الگوی معماری "p" مخفف ارایه‌دهنده است. نما، کنترل صفحه را مدیریت کرده و نمایش می‌دهد. ارائه دهنده پاسخگو است تا از طرف نما به تمام رویدادهای UI پاسخ دهد. نما ورودی را از کاربران جمع می‌کند و سپس داده‌ها را از یک طرف به سمت دیگری مدل می‌کند که نتایج را به نمایش تبدیل می‌کند.

مقایسه MVP و MVC

ارایه‌دهنده مسئولیت رسیدگی به کلیه رویدادهای UI را به نمایندگی از نما فراهم می‌کند. سپس با کمک Model می‌توانید داده‌ها را فیلتر کرده و نتیجه را به View منتقل کنید. نما و ارائه دهنده کاملاً مجزا هستند اما از طریق رابط با یکدیگر ارتباط برقرار می‌کنند.

MVVM از MVC تعریف شده است. الگوی MVVM از اتصال داده دو طرفه بین View و View-Model پشتیبانی می‌کند. این اجازه می‌دهد تا انتشار خودکار تغییرات در داخل View-Model به View باشد. معمولاً مدل نما از الگوی مشاهده‌گر برای ایجاد تغییر در مدل View استفاده می‌کند.

 

آیا mvc یک design pattern است؟ 

Design pattern یا الگوی طراحی جزء معماری های نرم افزار نیستند. الگوهای طراحی در شئ گرایی دخالت دارند و جدای از برنامه نویسی  و همچنین تفاوتهایی نیز دارند. ولی معماری لایه ها را از هم جدا می کند. معماری نرم افزار یک سیستمی است که سه بخش را در ارتباط با هم و جدا از هم برای یک هدفی نشان می دهد.