Что такое mvc в программировании
Перейти к содержимому

Что такое mvc в программировании

  • автор:

Что такое mvc в программировании

Model, View, Controller (MVC) — это шаблон (паттерн) программирования, разделяющий архитектуру приложения на три модуля: модель (Model), представление (View), контроллер (Controller). Простыми словами, он позволяет изменять каждый компонент независимо друг от друга для простой разработки и поддержки веб-приложений.

«IT-специалист с нуля» наш лучший курс для старта в IT

схема MVC-приложения, архитектура

Модель (Model) Это основная логика приложения. Отвечает за данные, методы работы с ними и структуру программы. Модель реагирует на команды из контроллера и выдает информацию и/или изменяет свое состояние. Она передает данные в представление. Представление (View) Задача компонента — визуализация информации, которую он получает от модели. View отображает данные на уровне пользовательского интерфейса. Например, в виде таблицы или списка. Представление определяет внешний вид приложения и способы взаимодействия с ним. Контроллер (Controller) Он обеспечивает взаимодействие с системой: обрабатывает действия пользователя, проверяет полученную информацию и передает ее модели. Контроллер определяет, как приложение будет реагировать на действия пользователя. Также контроллер может отвечать за фильтрацию данных и авторизацию.

Есть вариации схемы. Например, в некоторых пользователь взаимодействует с контроллером не напрямую, а через интерфейс. Но основной принцип работы шаблона остается тем же.

Профессия / 8 месяцев
IT-специалист с нуля

Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

vsrat_7 1 (1)

Компоненты модели различаются степенью зависимости друг от друга и ограничениями:

  • модель не зависит от представления и контроллера, но и не может использовать классы из их разделов;
  • представление может обращаться к модели за данными и событиями, но не может ее менять;
  • контроллер не может отображать данные, но способен менять модель в зависимости от действий пользователя.

Концепцию MVC предложил в конце 1970-х годов сотрудник Xerox Трюгве Реекскауг. Она была реализована в языке программирования Smalltalk-80. Окончательную версию шаблона опубликовали только 10 лет спустя в журнале Technology Object. Концепция стала популярна с появлением быстро развертываемых фреймворков и интерактивных веб-приложений.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить

Как работает MVC

Разберем на реальном примере. Условная физическая модель MVC-архитектуры — персональный компьютер, в котором:

  • контроллер — клавиатура или мышь. С их помощью пользователь вводит команды;
  • модель — системный блок, в котором происходит обработка команд и хранятся системные и пользовательские файлы;
  • представление — монитор, на котором визуализируется работа системного блока.

На этом примере легче понять зависимость компонентов друг от друга:

  • если заменить системный блок (без переноса старых данных), но оставить старый монитор и клавиатуру, пользователь получит другой компьютер с новой ОС, файлами, системными характеристиками, драйверами и т.д.;
  • если поменять монитор и клавиатуру, но оставить старый системный блок, человек будет использовать прежнюю ОС, файлы, системные характеристики. Изменения коснутся только некоторых драйверов.

В архитектуре одного приложения может быть несколько представлений. Например, в Excel одни и те же данные выводятся в виде круговой диаграммы или таблицы. В некоторых играх можно переключить вид от первого лица на вид от третьего или вообще перейти в режим карты. Пример из веб-разработки — мобильный и десктопный интерфейс сайтов и приложений. Все это разные варианты View для одной и той же Model.

Читайте также Как сделать свой веб-сайт?

Назначение модели MVC

Этот паттерн позволяет разделить логические части приложения и создавать их независимо друг от друга. То есть писать блоки кода, которые можно менять, не затрагивая другие. Например, переписать способ обработки данных, не затрагивая способ их отображения. Это помогает эффективно работать разным программистам — каждый занимается своим компонентом. При этом разработчик не должен вникать в чужой код. Его работа не влияет на другие фрагменты.

Модель MVC решает следующие задачи:

  • изменение только пользовательского интерфейса, а не бизнес-логики приложения;
  • использование в одном приложении разных интерфейсов с возможностью выбора;
  • замена реакции приложения на действия пользователя за счет использования другого контроллера.

В более широком плане внедрение модели помогает:

  • упростить код большого приложения, сделать его понятным и структурированным, облегчить поддержку, тестирование, повторное использование элементов;
  • организовать независимую работу различных отделов, которые занимаются разработкой своей части программного продукта;
  • упростить программную поддержку MVC-приложения за счет модификации отдельных компонентов, а не всей архитектуры.

Примеры MVC в веб-разработке

Разберем использование MVC в веб-фреймворках на примере социальной сети.

Контроллер

Пользователь заходит на сайт социальной сети и кликает на ссылку «Друзья», отправляя запрос на сервер.

website.com/profile/ —> возвращает ваш профиль

website.com/friends/ —> возвращает список друзей

website.com/friend=/ —> возвращает конкретного друга

Модель

На сервере приложение обрабатывает запрос, извлекает из базы данных список друзей пользователя.

< "userName": < "firstName": "Имя", "lastName": "Фамилия" >, "friends": [] >

Представление

Информация о друзьях пользователя выводится на экран в виде списка с юзернеймами.

Концепция MVC с успехом используется в веб-разработке благодаря универсальности, гибкости и простоте применения. В то же время она имеет ограничения. Это привело к появлению более специализированных вариантов реализации MVC, таких как Model-View-Presenter (WMVP) и Model-View-ViewModel (MVVM).

IT-специалист с нуля

Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Что такое MVC: рассказываем простыми словами

Что такое MVC: рассказываем простыми словами главное изображение

Современные сайты интерактивные и динамичные — они реагируют на действия пользователя, обрабатывают его запросы и выдают результат. Так работают многие онлайн-сервисы, например, интернет-банкинги или онлайн-кинотеатры. Для создания интерактивных и динамичных сайтов обычно используется архитектурный паттерн MVC. Рассказываем простыми словами, в чем суть этой модели.

  • Что такое модель MVC: теория
  • Разбираем MVC на примере магазина сэндвичей
  • Паттерн MVC в реальной веб-разработке: как работает контроллер
  • Модель
  • Представление
  • Заключение

Что такое модель MVC: теория

Статическая страница на HTML не умеет реагировать на действия пользователя. Для двухстороннего взаимодействия нужны динамические веб-страницы. MVC — ключ к пониманию разработки динамических веб-приложений, поэтому разработчику нужно знать эту модель.

MVC расшифровывается как «модель-представление-контроллер» (от англ. model-view-controller). Это способ организации кода, который предполагает выделение блоков, отвечающих за решение разных задач. Один блок отвечает за данные приложения, другой отвечает за внешний вид, а третий контролирует работу приложения.

Fullstack-разработчик — с нуля до трудоустройства за 16 месяцев

  • Постоянная поддержка от наставника и учебного центра
  • Помощь с трудоустройством
  • Готовое портфолио к концу обучения
  • Практика с первого урока

Вы получите именно те инструменты и навыки, которые позволят вам найти работу

  • Модель — этот компонент отвечает за данные, а также определяет структуру приложения. Например, если вы создаете To-Do приложение, код компонента model будет определять список задач и отдельные задачи.
  • Представление — этот компонент отвечает за взаимодействие с пользователем. То есть код компонента view определяет внешний вид приложения и способы его использования.
  • Контроллер — этот компонент отвечает за связь между model и view . Код компонента controller определяет, как сайт реагирует на действия пользователя. По сути, это мозг MVC-приложения.

Разбираем MVC на примере магазина сэндвичей

Мы уже рассматривали работу с вложенными коллбэками на примере приготовления гамбургеров. Продолжаем традицию: разберем паттерн MVC на примере магазина сэндвичей.

Представьте, что вы пришли в магазин или кафе, где можно заказать сэндвич. В меню есть бутерброды с тунцом, индейкой и ветчиной. Вы заказываете сэндвич с индейкой. Продавец понимает вас с полуслова. Он поворачивается в сторону кухни и говорит поварам, чтобы они приготовили сэндвич с индейкой.

У поваров под рукой есть разные продукты: тунец, индейка, ветчина, сыр, листья салата и другие ингредиенты, которые добавляют в бутерброды. Они выбирают только то, что нужно для вашего сэндвича с индейкой. Вы получаете свой заказ.

Покупку бутерброда можно описать через MVC:

  • Модель: кухня, на которой повар делает сэндвич
  • Представление: готовый бутерброд, который вы с удовольствием едите
  • Контроллер: продавец или бармен, который принимает заказ и передаёт его на кухню.

Схема MVC

Вы уже представляли готовый сэндвич с индейкой, когда заказывали его бармену. Это представление или view .

Точно так же можно представить взаимодействие с сайтом. Когда вы заходите на сайт Хекслета и переходите по ссылке «Истории успеха», то заранее представляете результат перехода по ссылке. Это список текстов с историями ребят, которые учились на Хекслете, а потом стали разработчиками.

Когда вы нажимаете на ссылку «Истории успеха», на наш сервер уходит запрос. В нём содержится просьба показать вам список текстов. Это очень похоже на просьбу продать вам бутерброд с индейкой. Это контроллер.

На сервере Хекслета ваш запрос обрабатывается. Программа достаёт из базы данных все последние тексты из рубрики «Истории успеха», чтобы показать список. Это можно сравнить с кухней и поварами из примера с сэндвичем. Это модель.

Сервер Хекслета берёт нужные ингредиенты из базы данных и готовит ваш заказ: список текстов. Тем же занимались повара на кухне магазина сэндвичей. Это снова представление или view .

Паттерн MVC в реальной веб-разработке: как работает контроллер

Контроллер обрабатывает входящие запросы. Во фреймворке это может заключаться в определении конкретных URL, на которые попадает пользователь при переходе по ссылке или при нажатии кнопки. Рассмотрим это на примере сайта, который отдает пользователю список его друзей:

 возвращает profilewebsite(.)com/friends/ -> возвращает friendswebsite(.)com/friend=/ -> возвращает профиль конкретного друга 

Модель

Модель отвечает за данные, которые хранятся и обрабатываются на сервере.

, friends > 

Представление

Это HTML-шаблон, который возвращает сервер после обработки запроса. Если запрос корректно обрабатывается, вы получаете веб-страницу со списком друзей. Если запрос некорректный, вы попадаете на страницу ошибки 404.

Заключение

MVC — подход к проектированию приложения, который предполагает выделение кода в блоки типов модель, представление и контроллер. Контроллер обрабатывает входящие запросы. Модель достаёт из базы данных информацию, нужную для выполнения конкретных запросов. Представление определяет результат запроса, который получает пользователь.

Это адаптированный перевод статьи What is MVC, and how is it like a sandwich shop?

Профессия «Fullstack-разработчик»

  • Станьте специалистом полного цикла и создавайте веб-приложения с нуля
  • Научитесь верстать страницы в HTML и CSS
  • Изучите фронтенд-разработку на JavaScript
  • Освойте платформу Node.JS и соберите весь бэкенд с ее помощью

Что такое MVC

Каждый компонент кода выполняет свою независимую функцию:

  1. Модель отвечает за хранение и обработку данных программы.
  2. Представление определяет внешний вид приложения и обеспечивает пользовательское взаимодействие.
  3. Контроллер управляет логикой приложения и контролирует взаимодействие между двумя другими частями MVC (Model View Controller).

Как работает MVC

Модель определяет структуру базы данных и обрабатывает все операции, связанные с данными. Благодаря представлению, пользователь может взаимодействовать с приложением. А контроллер является посредником между ними. Это означает, что контроллер обрабатывает запросы пользователя и определяет, какие данные должны быть переданы из модели в представление.

Разберем на примере:

  1. Вы находитесь в магазине обуви, и вам нужны черные кроссовки.
  2. Модель — это склад с обувью всех размеров и видов.
  3. Представление — это черные кроссовки нужного вам размера.
  4. Контролер — это продавец, который принимает ваш заказ и передает его на склад.

Зачем программистам нужен MVC

MVC (Model View Controller) позволяет логически разбить основные функции приложения на отдельные, четко определенные компоненты, что улучшает организацию работы с кодом. Такой подход дает легкость в разработке и поддержке программного продукта. Разделение приложения на компоненты позволяет вносить изменения в один компонент, не затрагивая остальные — это упрощает обслуживание и снижает вероятность ошибок.

Представим, что вы делаете приложение, которое позволит пользователям создавать задачи и организовывать их в списки. Модель определит, что такое «задача» и что такое «список». Представление определит, как они выглядят на экране и как с ними взаимодействовать. А контроллер определит, как добавлять новые задачи или отмечать выполненные.

  1. Сделать ваш код более читабельным и понятным
  2. Разделить логику приложения и его представление
  3. Упростить тестирование и отладку
  4. Повысить гибкость и расширяемость
  5. Соблюдать принцип единственной ответственности (SOLID).

Где используется MVC

MVC — это общий шаблон проектирования, который существует во многих фреймворках для веб-приложений, таких как Ruby on Rails, Django и Zend Framework.

Например, фреймворк ASP.NET MVC помогает разработчикам создавать веб-приложения с помощью языков программирования C#, Visual Basic .NET.

Что такое Data Science

  1. Позволяет создавать динамичные веб-сайты с использованием MVC паттерна (MVC Pattern).
  2. Обеспечивает чистое разделение интересов(Separation of Concerns), которое позволяет разработчикам изменять каждый компонент независимо друг от друга, что упрощает поддержку и расширение приложения. Например, если требуется изменить способ отображения данных пользователю, при помощи MVC можно поменять только соответствующее представление, не затрагивая остальные компоненты.
  3. Ускоряет разработку, благодаря использованию шаблонов проектирования.
  4. Не использует состояние представления или серверные формы, что делает фреймворк MVC идеальным для разработчиков, которые хотят полного контроля над поведением приложения;
  5. Поддерживает тестирование на основе разработки (TDD), из-за этого разработчики могут создавать приложение с модульными тестами и писать свои собственные тестовые случаи.

Что такое Data Science

Кто такой веб-разработчик

5 февр. 2024 г.

Кто такой веб-разработчик

Какой язык программирования выбрать в 2024 году

31 янв. 2024 г.

MVC — модель‑представление-контроллер

MVC — это паттерн проектирования веб‑приложений, который включает в себя несколько более мелких шаблонов. При использовании MVC на три отдельных компонента разделены модель данных приложения, пользовательский интерфейс и логика взаимодействия пользователя с системой, благодаря чему модификация одного из этих компонентов оказывает минимальное воздействие на остальные или не оказывает его вовсе.

Основная цель применения MVC состоит в разделении данных и бизнес‑логики от визуализации. За счет такого разделения повышается возможность повторного использования программного кода: например, добавить представление данных какого‑либо существующего маршрута не только в виде HTML, но и в форматах JSON, XML, PDF, XLSX становится очень просто и не требует исменений слоя бизнес‑логики исходного маршрута. Также упрощается и сопровождение программного кода: внесение изменений во внешний вид, например, не отражаются на бизнес‑логике, а изменения бизнес‑логики не затрагивают визуализацию.

Концепция MVC разделяет данные, представление и обработку действий пользователя на компоненты:

  • Модель / Model — предоставляет собой объектную модель некой предметной области, включает в себя данные и методы работы с этими данными, реагирует на запросы из контроллера, возвращая данные и/или изменяя своё состояние. При этом модель не содержит в себе информации о способах визуализации данных или форматах их представления, а также не взаимодействует с пользователем напрямую.
  • Представление / View — отвечает за отображение информации (визуализацию). Одни и те же данные могут представляться различными способами и в различных форматах. Например, коллекцию объектов при помощи разных представлений можно представить на уровне пользовательского интерфейса как в табличном виде, так и списком; на уровне API можно экспортировать данные как в JSON, так в XML или XSLX.
  • Контроллер / Controller — обеспечивает связь между пользователем и системой, использует модель и представление для реализации необходимой реакции на действия пользователя. Как правило, на уровне контроллера осуществляется фильтрация полученных данных и авторизация — проверяются права пользователя на выполнение действий или получение информации.

Альтернативные названия паттерна MVC:

  • model-view-controller
  • модель‑представление-поведение
  • модель‑представление-контроллер
  • модель‑вид-контроллер

Большинство фреймворков для разработки веб‑приложений построены на парадигме MVC, поэтому достаточно просто понять принцип работы любого нового фреймворка, если вы сталкивались с паттерном MVC ранее.

Использование паттерна MVC также позволяет следовать принципам SOLID в ООП и принципу DRY.

Статья опубликована в 2019 году

Тематические статьи

SOLID — принципы объектно‑ориентированного программирования

SOLID это аббревиатура пяти основных принципов проектирования в объектно‑ориентированном программировании, предложенных Робертом Мартином:

  • Single responsibility — принцип единственной ответственности
  • Open-closed — принцип открытости / закрытости
  • Liskov substitution — принцип подстановки Барбары Лисков
  • Interface segregation — принцип разделения интерфейса
  • Dependency inversion — принцип инверсии зависимостей

веб-разработка
методологии разработки
Статья опубликована в 2019 и обновлена в 2023 году

REST и RESTful — передача репрезентативного состояния и ресурсный роутинг

REST — это стиль построения архитектуры распределенного клиент‑серверного приложения, который упрощает роутинг и построение API.

методологии разработки
веб-разработка
Статья опубликована в 2014 году

Стандарты кодирования — залог хорошей сопровождаемости проекта

Любая командная разработка может быть эффективной только в том случае, если участники команды имеют общее видение.

Если над проектом работает команда, а не один‑два разработчика, то обязательно должен быть стандарт оформления кода — набор правил и соглашений, которые описывают базовые принципы оформления программного кода, используемого совместно группой разработчиков.

методологии разработки
веб-разработка
Статья опубликована в 2014 и обновлена в 2023 году

Принцип программирования YAGNI — «Вам это не понадобится»

Принцип заключается в том, что возможности, которые не описаны в требованиях к системе, просто не должны реализовываться.

В результате разработка ненужных функций не сжигает бюджет проекта, а разработчики не тратят оплачиваемое время на реализацию и дальнейшее сопровождение в реальности ненужного функционала. Избыточный функционал сжигает больше всего ресурсов именно на сопровождении: больше написанного кода — труднее сопровождать и выше вероятность появления «багов». И тут очень уместна поговорка: «лучший код — это ненаписанный код».

методологии разработки
веб-разработка
Статья опубликована в 2019 и обновлена в 2023 году

Принцип программирования KISS — делайте вещи проще

KISS — это принцип проектирования и программирования, при котором простота системы декларируется в качестве основной цели или ценности.

Большая часть программных систем необосновано перегружена практически ненужными функциями, что ухудшает удобство их использование конечными пользователями, а также усложняет их поддержку и развитие разработчиками. Следование принципу KISS позволяет разрабатывать решения, которые не обладают этими недостатками: они просты в использовании и в сопровождении.

методологии разработки
веб-разработка
Статья опубликована в 2019 и обновлена в 2023 году

Принцип программирования DRY — don’t repeat yourself / не повторяйте себя

Следование принципу DRY позволяет добиться высокой сопровождаемости программного продукта: внесение изменений и тестирование значительно упрощаются.

Если код не дублируется, то для изменения логики достаточно внесения исправлений всего в одном месте. Также значительно проще тестировать одну (пусть и более сложную) функцию, а не набор из десятков однотипных. При следовании DRY упрощается и повторное использование функций, вынесенных из сложных алгоритмов, что позволяет сократить время разработки и тестирования новой функциональности.

веб-разработка
методологии разработки
Статья опубликована в 2018 и обновлена в 2023 году

TDD — разработка через тестирование

TDD, test-driven development или разработка через тестирование — это методология разработки ПО, повышающая надёжность и сопровождаемость проектов.

TDD основывается на повторении коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется программный код, который реализует желаемое поведение системы и позволяет пройти написанный тест, а после этого проводится рефакторинг написанного кода с постоянной проверкой прохождения тестов.

автоматизированное тестирование
тестирование
методологии разработки
Статья опубликована в 2014 и обновлена в 2023 году

Флаги функций (Feature Flags)

Флаги функций позволяют отделить развертывание функций от развертывания кода, обеспечивают возможности для A/B-тестирования и предоставляют механизм быстрого отключения проблемных функций

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *