فریمورک mvc چیست به زبان ساده
فریمورک Model-View-Controller(MVC) یک الگوی معماری است که یک اپلیکیشن را به سه کامپوننت مجزای منطقی View ,Controller ,Model تقسیم میکند. از این رو به اختصار به آن MVC گفته میشود. هر کامپوننت ساختاری، برای کنترل جنبههای خاصی از توسعهی یک برنامه ساخته شده است.
MVC لایه منطق تجاری (Business logic layer ) و لایه نمایش (Presentation layer) را از یک دیگر مجزا میکند. استفاده از این الگو در رابطهای کاربری گرافیکی دسکتاپ (GUI) مرسوم است. امروزه، معماری MVC برای طراحی برنامههای وب استفاده میشود. همچنین در برنامههای تلفن همراه نیز محبوب شده است.
در ادامه این مقاله به قلم واحد تحریریه تیم همرویش، موارد زیر را بررسی میکنیم:
- تاریخچه MVC
- ویژگیهای MVC
- معماری MVC
- نمونهای از MVC
- فریمورکهای وب محبوب MVC
- مزایای این الگو
- معایب استفاده از MVC
- مقایسه معماری سه لایهای و MVC
تاریخچه MVC
ایده الگوی MVC در سال 1979 توسط Trygve Reenskaug مطرح شد. این مدل برای اولین بار در سال 1987 در زبان برنامه نویسی Smalltalk معرفی شد. MVC در مقالهای در سال 1988 به عنوان یک مفهوم کلی پذیرفته شد. در چندین سال گذشته، از الگوی MVC به طور گستردهای در برنامههای وب مدرن استفاده میشود.
ویژگیهای MVC
- قابلیت تست آسانی دارد. فریمورکی بسیار قابل توسعه، قابل تست و قابل اتصال است.
- کنترل کامل بر روی HTML و همچنین URLها را ارائه میدهد.
- از ویژگیهای موجود ارائه شده توسط NET ،JSP ،Django وغیره استفاده میکند.
- منطق مدل، ویو و کنترلر را به صورت شفافی مجزا میکند. همچنین وظایف برنامه یعنی منطق تجاری، منطق Ul و منطق ورودی (input) را نیز تفکیک میکند.
- مسیریابی URL برای URLهای کاربر پسند SEO. نگاشت قوی URL برای URL های قابل فهم و قابل جستجو
- پشتیبانی از توسعه آزمون محور ( Test Driven Development:TDD)
هم رویش منتشر کرده است:
آموزش HTML5 پروژه محور و سریع __ طراحی سایت شخصی در 60 دقیقه
معماری MVC
سه کامپوننت مهم MVC عبارت اند از:
- مدل (Model): شامل تمام دادهها و منطق مربوط به آن است.
- ویو(View) : دادهها را به کاربر نشان میدهد. همچنین تعاملات کاربر را نیز کنترل میکند.
- کنترلر(Controller): رابطی میان دو کامپوننت Model و View است.
در ادامه، هر کدام از این کامپوننتها را معرفی میکنیم:
View
ویو بخشی از اپلیکیشن برای نمایش دادن دادهها است.
Viewها توسط دادههای جمع آوری شده از دادههای مدل ایجاد میشوند. یک ویو درخواست اطلاعات را به مدل می دهد. سپس خروجی را به کاربر نمایش میدهد.
ویو همچنین دادههای گفتگوها، نمودارها و جداول را نشان میدهد. به عنوان مثال، هر ویوی کلاینت، شامل تمام کامپوننتهای رابط کاربری مانند تکست باکس، دکمههای کشویی و غیره است.
پیش از این آموزش ساخت وبسایت انیمیشن دار با html و css در همرویش منتشر شد. برای دیدن فیلم معرفی این بسته آموزشی بر روی این لینک (+) و یا پخش کننده پایین کلیک کنید:
برای دریافت بسته کامل آموزش ساخت وبسایت انیمیشن دار با html و css کلیک کنید(+).
Controller
Controller بخشی از برنامه است که تعاملات کاربر را کنترل میکند. کنترلر، ورودی یعنی ماوس و صفحه کلید را از کاربر دریافت و درک می کند. سپس آن را به مدل و ویو میدهد تا به طور مناسب تغییر کنند.
کنترلر دستوراتی را برای به روزرسانی حالت به مدل میفرستد (به عنوان مثال، ذخیره یک داکیومنت خاص). همچنین دستوراتی را به ویو مرتبط خود نیز میفرستد تا نمایش ویو را تغییر دهد (به عنوان مثال پیمایش یک داکیومنت خاص).
Model
کامپوننت مدل، دادهها و منطق مربوط به آنها را در خود ذخیره میکند. دادههایی را که بین کامپوننتهای کنترلر یا هر منطق تجاری دیگر که مرتبط هستند، نمایش میدهد.
به عنوان مثال، یک آبجکت کنترلر، اطلاعات مشتری را از پایگاه داده بازیابی میکند. دادهها را دستکاری میکند. سپس دوباره به پایگاه داده ارسال میکند. همچنین از آن برای ارائهی داده های مشابه نیز میتواند استفاده کند.
مدل به درخواستهایی که از طرف ویو هستند، پاسخ میدهد. همچنین به دستورالعملهای کنترلر برای بروز رسانی خود پاسخ میدهد. مدل، پایینترین سطح از الگوی MVC است. یکی دیگر از وظایف مدل، مسئولیت حفظ دادهها نیز است.
مثالهایی از MVC
در ادامه، سه کامپوننت معرفی شده یعنی Model ,View ,Controller را در مثالهایی از زندگی روزمره بررسی می کنیم.
مثال اول:
اگر یک رستوران را در نظر بگیریم؛ افرادی که به رستوران میروند برای سفارش غذایی که میخواهند، به آشپز خانهی رستوران نمیروند. بلکه منتظر میمانند تا پیش خدمت بیاید.
پیشخدمت به سراغ مشتری میآید. سپس مشتری فقط غذا را سفارش میدهد. پیشخدمت نمیداند مشتری چه کسی است. چه چیزی میخواهد؟ فقط جزئیات سفارش غذای درخواستی مشتری را یادداشت میکند.
در مرحلهی بعد، پیشخدمت به سمت آشپزخانه میرود. او مسئول آماده کردن سفارش مشتری نیست.
پیشخدمت سفارش و همچنین شمارهی میز مشتری را به آشپز میدهد. آشپز نیز شروع به آماده کردن غذا می کند.
آشپز از مواد اولیه برای پخت غذا استفاده میکند. فرض کنیم که سفارش، یک ساندویچ سبزیجات است. برای درست کردن سفارش، به نان، گوجه فرنگی، سیب زمینی، فلفل دلمهای، پیاز، پنیر و غیره نیاز دارد. این مواد را از یخچال تهیه میکند.
در پایان کار غذا را به گارسون تحویل میدهد. وظیفهی پیشخدمت این است که غذا را به خارج از آشپزخانه منتقل کند.
حال پیشخدمت میداند که مشتری چه غذایی سفارش داده است. همچنین چگونه آن را سرو میکنند.
در این مثال:
View: مشتری
Controller: پیشخدمت
Model: آشپز
Data: مواد داخل یخچال
نمونه ی دیگری از مدل MVC را میتوان رانندگی در خودرو مثال زد.
مثال دوم:
هر خودرو از 3 بخش اصلی تشکیل شده است:
View: رابط کاربری، شامل: اهرم دنده، پنلها، فرمان، ترمز و …
Controller: موتور ماشین
Model: مخزن بنزین یا دیزل
اتومبیل با وجود موتور حرکت میکند. سوخت را از مخزن میگیرد. اما فقط با استفاده از دستگاههای رابط کاربری که در بالا نام بردیم، حرکت میکند.
فریمورکهای محبوب وب MVC
در ادامه، نام برخی از فریمورکهای محبوب MVC را آوردهایم.
- Ruby on Rails
- Django
- CakePHP
- Yii
- CherryPy
- Spring MVC
- Catalyst
- Rails
- Zend Framework
- CodeIgniter
- Laravel
- Fuel PHP
- Symphony
مزایای MVC
از مزایای اصلی استفاده از معماری MVC:
- ویرایش و نگهداری آسان کد و همچنین گسترش و توسعه ی آسان آن.
- کامپوننتهای MVC را میتوان به صورت مجزا تست کرد.
- پشتیبانی راحتتر از مشتریهای جدید
- توسعهی کامپوننتهای مختلف میتواند به طور موازی انجام شود.
- با تقسیم یک اپلیکیشن به سه واحد مدل، ویو و کنترلر، از ایجاد پیچیدگی جلوگیری میکند.
- از الگوی Front Controller استفاده میکند. درخواستهای وب را از طریق یک کنترل کننده پردازش میکند.
- بهترین پشتیبانی را برای توسعه آزمون محور ارائه میدهد.
- برای برنامههای وب که توسط تیمهای بزرگی از طراحان و توسعه دهندگان وب پشتیبانی میشوند، به خوبی کار میکند.
- تفکیک نگرانیها را به صورت مرتبی (SoC) فراهم میکند. SoC یک اصل طراحی برای تفکیک یک برنامه رایانه ای به بخشهای مجزا است. به طوری که هر بخش یک نگرانی جداگانه را برطرف میکند. مفهومی که از آن به عنوان نگرانی نام میبریم در واقع، مجموعه ای از اطلاعات است که بر کد برنامه های رایانه ای تأثیر می گذارد.
- بهینه سازی موتور جستجو (SEO) کاربر پسند
- همه کلاسها و آبجکتها از یک دیگر مستقل هستند. به همین علت می توان هر یک از آنها را به صورت مجزا تست کرد.
- MVC امکان گروه بندی منطقی، برای انجام اقدامات مرتبط در یک کنترل کننده را فراهم میکند.
معایب استفاده از MVC
- خواندن، تغییر، تست واحد و استفادهی مجدد از این مدل دشوار است.
- پیمایش فریمورک ممکن است کمی پیچیده باشد. زیرا لایههای جدیدی را معرفی میکند که کاربران را ملزم میکند با معیارهای تجزیه MVC سازگار شوند.
- بدون پشتیبانی رسمی اعتبار سنجی
- افزایش پیچیدگی و عدم کارایی دادهها
- مشکل استفاده از MVC با رابط کاربری مدرن
- برای انجام برنامه نویسی موازی نیاز به چندین برنامه نویس است.
- نیازمند دانش چندین فناوری است.
- نگهداری کدهای زیادی در Controller
مقایسه معماری سه لایه ای با الگوی MVC
به طور خلاصه فریمورک mvc چیست؟
- MVC یک الگو است. اپلیکیشن را به سه کامپوننت مدل، ویو و کنترلر تقسیم میکند.
- Model: شامل همهی دادهها و منطق مرتبط با آنها است.
- View: داده را به کاربر نشان میدهد. هچنین تعاملات کاربر را کنترل میکند.
- Controller: یک اینترفیس میان کامپوننتهای مدل و ویو است.
- الگوی MVC اولین بار در سال 1979 توسط Trygve Reenskaug ارائه شد.
- MVC یک فریمورک بسیار توسعه پذیر، قابل تست و قابل اتصال است.
- برخی از فریمورکهای محبوب MVC عبارت اند از Rails ،Zend Framework ،CodeIgniter ،Laravel ،Fuel PHP و …
کلیدواژگان
فریمورک MVC چیست | مخفف mvc چیست | فریمورک mvc چیست با مثال | فریمورک mvc چیست به زبان ساده | مزایا و معایب mvc | معایب استفاده از MVC | معایب mvc | مزایای mvc
منبع
MVC Tutorial for Beginners: What is, Architecture & Example