MVC ArchiТекстура и рамка с примери
⚡ Умно обобщение
Model-View-Controller (MVC) е архитектурен модел, който разделя приложението на три компонента – Model, View и Controller – изолирайки бизнес логиката от презентационния слой, за да изгради поддържаеми, тестваеми уеб и десктоп приложения, използвайки рамки като Spring, Django и Laravel.

Какво е MVC Framework?
- Модел-изглед-контролер (MVC) framework е архитектурен модел, който разделя приложението на три основни логически компонента модел, изглед и контролер. Оттук и съкращението MVC. Всеки компонент на архитектурата е изграден, за да се справи със специфичен аспект на разработка на приложение. MVC разделя бизнес логиката и презентационния слой един от друг. Традиционно се използва за настолни графични потребителски интерфейси (GUI). В наши дни MVC архитектурата в уеб технологиите стана популярна за проектиране на уеб приложения, както и на мобилни приложения.
История на MVC
- Архитектурата на MVC се обсъжда за първи път през 1979 г. от Trygve Reenskaug
- MVC моделът е въведен за първи път през 1987 г. в езика за програмиране Smalltalk.
- MVC е прието за първи път като обща концепция в статия от 1988 г
- Напоследък MVC шаблонът се използва широко в съвременните уеб приложения.
Характеристики на MVC
- Лесна и без триене възможност за тестване. Високо тестваема, разширяема и включваема рамка
- За да проектирате архитектура на уеб приложение, използвайки MVC шаблона, той предлага пълен контрол върху вашия HTML, както и върху вашия URLs
- Използвайте съществуващите функции, предоставени от ASP.NET, JSP, Django и др.
- Ясно разделяне на логиката: модел, изглед, контролер. Разделяне на задачите на приложението, т.е. бизнес логика, Ul логика и входна логика
- URL Маршрутизиране за SEO оптимизация URLс. Мощен URL-картаping за разбираемост и възможност за търсене URLs
- Поддръжка за разработка, управлявана от тестове (TDD)
MVC Archiтекстура
След като предимствата са ясни, ето подробната архитектура на MVC рамката:

Три важни MVC компонента са:
- Модел: Включва всички данни и свързаната с тях логика
- Изглед: Представяне на данни на потребителя или управление на потребителското взаимодействие
- Контролер: интерфейс между компонентите на модела и изгледа
Нека разгледаме подробно всеки от тези компоненти:
Гледка
Изгледът е тази част от приложението, която представлява представянето на данни.
Изгледите се създават от данните, събрани от данните на модела. Изгледът изисква от модела да предостави информация, така че да представи изходната презентация на потребителя.
Изгледът също така представя данните от диаграми, диаграми и таблици. Например всеки клиентски изглед ще включва всички компоненти на потребителския интерфейс като текстови полета, падащи менюта и т.н.
Регулатор
Контролерът е онази част от приложението, която обработва взаимодействието с потребителя. Контролерът интерпретира входните данни от мишката и клавиатурата от потребителя, като информира модела и изгледа да се променят съответно.
Контролерът изпраща команди към модела, за да актуализира състоянието му (например, запазване на конкретен документ). Контролерът също така изпраща команди към свързания с него изглед, за да промени представянето на изгледа (например, превъртане на конкретен документ).
Модел
Компонентът на модела съхранява данни и свързаната с тях логика. Той представлява данни, които се прехвърлят между компонентите на контролера или всяка друга свързана бизнес логика. Например обект Controller ще извлече информацията за клиента от базата данни. Той манипулира данни и ги изпраща обратно към базата данни или ги използва за изобразяване на същите данни.
Той отговаря на заявките от изгледите, а също така отговаря на инструкциите от контролера за самоактуализация. Той е и най-ниското ниво в шаблона, което е отговорно за поддържането на данните.
Примери за MVC
Нека видим пример за контролер за изглед на модел от ежедневието:
Пример 1
- Да предположим, че отивате на ресторант. Няма да отидете в кухнята и да приготвите храна, което със сигурност можете да направите у дома. Вместо това отивате там и чакате сервитьора да дойде.
- Сега сервитьорът идва при вас и вие поръчвате храната. Сервитьорът не знае кой сте и какво искате, той просто записа подробностите за вашата поръчка за храна.
- След това сервитьорът се премества в кухнята. В кухнята сервитьорът не приготвя храната ви.
- Готвачът приготвя вашата храна. Сервитьорът получава вашата поръчка заедно с номера на вашата маса.
- Гответе след това приготвена храна за вас. Той използва съставки за приготвяне на храната. Да приемем, че сте поръчали зеленчуков сандвич. След това той се нуждае от хляб, домат, картоф, люта чушка, лук, малко сирене и т.н., които набавя от хладилника
- Кук накрая предава храната на сервитьора. Сега е работа на сервитьора да премести тази храна извън кухнята.
- Сега сервитьорът знае коя храна сте поръчали и как се сервира.
В този пример за MVC архитектура,
View= You Waiter= Controller Cook= Model Refrigerator= Data
Нека видим още един пример за MVC модел,
Пример 2
Механизмът за задвижване на автомобил е друг пример за модела MVC.
- Всяка кола се състои от три основни части.
- Изглед: Потребителски интерфейс: (Скоростен лост, панели, волан, спирачка и др.)
- Контролер - механизъм (двигател)
- Модел - Съхранение (резервоар за бензин или дизел)
Автомобилът работи от двигателя взема гориво от хранилището, но работи само с помощта на споменатите потребителски интерфейсни устройства.
Популярни MVC уеб рамки
Ето списък на някои популярни MVC рамки:
- Руби на релси
- Django
- CakePHP
- Yii
- CherryPy
- Пролетен MVC
- Катализатор
- Релси
- Zend Framework
- Codeподпалвач
- Laravel
- Гориво PHP
- Symphony
Предимства на MVC: Основни предимства
Ето основните предимства от използването на MVC архитектура:
- Лесна поддръжка на код, който лесно се разширява и разширява
- Компонентът на модела MVC може да бъде тестван отделно от потребителя
- По-лесна поддръжка за нови типове клиенти
- Разработването на различните компоненти може да се извършва паралелно.
- Помага ви да избегнете сложността, като разделите приложението на трите единици. Модел, изглед и контролер
- Той използва само модел на преден контролер, който обработва заявки за уеб приложения чрез един контролер.
- Предлага най-добрата поддръжка за разработка, управлявана от тестове
- Работи добре за уеб приложения, които се поддържат от големи екипи от уеб дизайнери и разработчици.
- Осигурява ясно разделяне на отговорностите (SoC).
- Удобен за оптимизация за търсачки (SEO).
- Всички класове и обекти са независими един от друг, така че можете да ги тествате поотделно.
- MVC дизайн шаблонът позволява логическо групиранеping на свързани действия върху контролер заедно.
Недостатъци на използването на MVC
- Труден за четене, промяна, единичен тест и повторна употреба на този модел
- Навигацията в рамката може да бъде сложна, тъй като въвежда нови слоеве от коремни органи.tracция, която изисква от потребителите да се адаптират към критериите за декомпозиция на MVC.
- Няма официална поддръжка за валидиране
- Повишена сложност и неефективност на данните
- Трудността при използването на MVC с модерния потребителски интерфейс
- Има нужда от множество програмисти, които да извършват паралелно програмиране.
- Изискват се познания за множество технологии.
- Поддръжка на много кодове в контролера
3 нива Architecture срещу MVC Archiтекстура
| Параметър | 3-Tier Archiтекстура | MVC Archiтекстура |
|---|---|---|
| общуване | Този тип архитектурен модел никога не комуникира директно със слоя данни. | Всички слоеве комуникират директно чрез триъгълна топология. |
| употреба | 3 нива: широко използвани в уеб приложения, където клиентът, нивата на данни и междинният софтуер работят на физически отделни платформи. | Обикновено се използва в приложения, които работят на една графична работна станция. |


