Основы. Часть 1 - Шаблон MVC

Вместо введения

Иногда начинаешь рассказывать о чем-нибудь небольшом. Потом думаешь что надо добавить отсутствующие детали, развивать тему и, в итоге, получается практически учебник. Так вышло у меня в этот раз. Началось все с небольшой заметки о ненавязчивом JavaScript. Поскольку он связан с проверкой данных… В итоге получился учебник по Microsoft ASP.NET MVC 3.

Что такое MVC?

MVCАббревиатура MVC расшифровывается как Model-View-Controller (Модель-Представление-Контроллер). Это архитектура построения приложения, в рамках которой оно разделяется на три компонента:

  • Модель (Model) – предоставляет данные для Представлений в ответ на запросы Контроллера, содержит бизнес-логику приложения.
  • Представление (View) – отвечает за пользовательский интерфейс, отображает данные, полученные от Модели.
  • Контроллер (Controller) – обрабатывает команды пользователя, определяет Модели для работы и связывает ее с Представлением.

Бизнес-логика, расположенная в Модели, включает все правила и алгоритмы, связанные с предметной областью решаемой задачи. Проще говоря – это ядро создаваемого приложения, которое может быть как банковским клиентом, так и онлайн игрой или блогом.

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

Несколько упрощая, работу MVC приложения можно описать следующим образом:

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

Зависимости между компонентами шаблона

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

Представление, зависит от Модели, т.к. полагается на получаемые от нее данные.

А вот Модель не зависит ни от Представления ни от Контроллера. Это позволяет вести разработку Модели независимо, а так же создавать для нее несколько Представлений.

Результат применения MVC

  • Уменьшается зависимость между частями приложения, что увеличивает его гибкость;
  • Появляется возможность разрабатывать тесты для компонентов приложения, т.е. использовать технику разработки через тестирования (Test-Driven Development или сокращенно TDD).

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

Ошибки, при использовании MVC

Перегруженный Контроллер

Некоторые разработчики ошибочно трактуют Модель только как средство доступа к базе данных. В результате бизнес-логика переходит в Контроллер, что в корне противоречит архитектуре MVC.

Стоит помнить, что Модель это не только доступ к данным, но и логика приложения, проверка получаемых от пользователя данных и т. д. В свою очередь, Контроллер – связующее звено между ней, Представлением и пользователем.

Перегруженная Модель

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

Данный подход ошибочен с точки зрения архитектуры MVC, т.к. нарушается четкое разделение компонентов: Модель становится зависима от Представления.

При правильном подходе, Логика пользовательского интерфейса должна находиться в Представлениях. Но при этом важно корректно разделить ее и бизнес-логику.