Общие сведения об ASP.NET MVC

от Корпорации Майкрософт

Узнайте о различиях между ASP.NET приложениями MVC и приложениями ASP.NET Web Forms. Узнайте, как решить, когда создавать ASP.NET приложения MVC.

Схема архитектуры Model-View-Controller (MVC) разделяет приложение на три основных компонента: модель, представление и контроллер. Платформа MVC ASP.NET предоставляет альтернативу шаблону ASP.NET Web Forms для создания веб-приложений на основе MVC. Платформа ASP.NET MVC является легковесной платформой отображения с широкими возможностями тестирования и, подобно приложениям на основе веб-форм, интегрирована с существующими функциями ASP.NET, например с главными страницами и проверкой подлинности на основе членства. Платформа MVC определена в пространстве имен System.Web.Mvc и является основной поддерживаемой частью пространства имен System.Web .

MVC представляет собой стандартный шаблон разработки, знакомый многим специалистам. Некоторые типы веб-приложений имеют преимущества при создании на платформе MVC. Для других может быть целесообразно использование традиционной схемы приложения ASP.NET, основанной на веб-формах и обратной передаче. В некоторых случаях возможно сочетание двух подходов: применение одной схемы не исключает использования другой.

В состав платформы MVC входят следующие компоненты.

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

Рис. 01. Вызов действия контроллера, которое ожидает значение параметра (щелкните для просмотра полноразмерного изображения)

  • Модели. Объекты модели — это части приложения, реализующие логику для домена данных приложения. Объекты моделей часто получают и сохраняют состояние модели в базе данных. Например, объект Product может получать сведения из базы данных, работать с ней, а затем записывать обновленные сведения обратно в таблицу Products в SQL Server.

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

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

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

Шаблон MVC позволяет создавать приложения, различные аспекты которых (логика ввода, бизнес-логика и логика интерфейса) разделены, но достаточно тесно взаимодействуют друг с другом. Эта схема указывает расположение каждого вида логики в приложении. Логика пользовательского интерфейса относится к представлению. Логика ввода относится к контроллеру. Бизнес-логика размещается в модели. Это разделение позволяет работать со сложными структурами при создании приложения, так как обеспечивает одновременную реализацию только одного аспекта. Например, разработчик может сконцентрироваться на создании представления отдельно от бизнес-логики.

В дополнение к упрощению сложных структур схема MVC также облегчает тестирование приложений по сравнению с веб-приложениями ASP.NET на основе веб-форм. Например, в веб-приложении ASP.NET на основе веб-форм один класс используется для отображения вывода и для ответа на ввод пользователя. Создание автоматических тестов для приложений ASP.NET на основе веб-форм может представлять сложности, так как для тестирования отдельной страницы следует создать экземпляр класса страницы, всех дочерних элементов управления и других зависимых классов приложения. Большое число экземпляров классов, необходимое для запуска страницы, усложняет создание тестов для отдельных частей приложения. Из-за этого тестирование приложений ASP.NET на основе веб-форм может быть сложнее тестирования приложения MVC. Более того, для тестирования приложения ASP.NET необходим веб-сервер. Платформа MVC разделяет компоненты и активно использует интерфейсы, что позволяет тестировать отдельные элементы вне остальной структуры.

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

Выбор времени создания приложения MVC

Следует внимательно продумать вопрос о создании веб-приложения на основе платформы ASP.NET MVC или на основе модели веб-форм ASP.NET. Платформа MVC не заменяет собой модель веб-форм. Обе модели можно использовать для веб-приложений. (при наличии существующих приложений на основе веб-форм они будут продолжать работу в нормальном режиме).

Перед использованием платформы MVC или модели веб-форм для определенного веб-сайта следует взвесить все преимущества каждого из подходов.

Преимущества веб-приложения на основе MVC

Платформа ASP.NET MVC имеет следующие преимущества.

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

Преимущества веб-приложения на основе веб-форм

Платформа на основе веб-форм имеет следующие преимущества.

  • Она поддерживает модель событий, которая сохраняет состояние при передаче через HTTP, что облегчает разработку бизнес веб-приложений. Приложение на основе веб-форм предоставляет множество событий, поддерживаемых различными серверными элементами управления.
  • Она использует шаблон контроллера страницы, добавляющий функции к отдельным страницам. Дополнительные сведения см. в разделе Page Controller.
  • Он использует состояние просмотра или серверные формы, что упрощает управление сведениями о состоянии.
  • Она подходит для небольших коллективов веб-разработчиков, которым необходимо использовать большое количество компонентов для быстрого развертывания приложений.
  • Как правило, это менее сложно для разработки приложений, так как компоненты (класс Page , элементы управления и т. д.) тесно интегрированы и обычно требуют меньше кода, чем модель MVC.

Возможности платформы ASP.NET MVC

Платформа ASP.NET MVC предоставляет следующие возможности.

  • Разделение задач приложения (логика ввода, бизнес-логика и логика пользовательского интерфейса), возможность тестирования и разработка на основе тестирования (TDD) по умолчанию. Все основные контракты платформы MVC основаны на интерфейсе и подлежат тестированию с помощью макетов объекта, которые имитируют поведение реальных объектов приложения. Приложение можно подвергать модульному тестированию без запуска контроллеров в процессе ASP.NET, что ускоряет тестирование и делает его более гибким. Для тестирования возможно использование любой платформы модульного тестирования, совместимой с .NET Framework.
  • Расширяемая и дополняемая платформа. Компоненты платформы ASP.NET MVC можно легко заменить или настроить. Разработчик может подключать собственный механизм представлений, политику маршрутизации URL-адресов, сериализацию параметров методов действий и другие компоненты. Платформа ASP.NET MVC также поддерживает использование моделей контейнера внедрения зависимости (DI) и инверсии элемента управления (IOC). ВНЕДРЕНИЕ позволяет внедрять объекты в класс, а не полагаться на класс для создания самого объекта. Модель инверсии элемента управления указывает на то, что если один объект требует другой объект, то первые объекты должны получить второй объект из внешнего источника (например, из файла конфигурации). Это облегчает тестирование.
  • Мощный компонент сопоставления URL-адресов, который позволяет создавать приложения с понятными URL-адресами и url-адресами с возможностью поиска. URL-адреса не должны содержать расширения имен файлов и предназначены для поддержки шаблонов именования URL-адресов, обеспечивающих адресацию, оптимизированную для поисковых систем (SEO) и для передачи репрезентативного состояния (REST).
  • Поддержка использования разметки в существующих файлах страниц ASP.NET (ASPX), элементов управления (ASCX) и главных страниц (MASTER) как шаблонов представлений. С платформой MVC ASP.NET можно использовать существующие функции ASP.NET, такие как вложенные страницы master, встроенные выражения (<%= %>), декларативные серверные элементы управления, шаблоны, привязка данных, локализация и т. д.
  • Поддержка существующих функций ASP.NET. ASP.NET MVC позволяет использовать такие функции, как проверка подлинности с помощью форм и Windows, проверка подлинности по URL-адресу, членство и роли, кэширование вывода и данных, управление состоянием сеанса и профиля, наблюдение за работоспособностью, система конфигурации и архитектура поставщика.