Спонсор: Microsoft
Опубликован: 30.01.2013 | Доступ: свободный | Студентов: 1198 / 140 | Длительность: 17:23:00
Теги: .net, ajax, asp, www, интранет
Лекция 6:

Построение приложений на основе шаблона "Model-View-Controller" с применением ASP.NET MVC Framework

Аннотация: Эта лекция содержит информацию о разработке веб-приложений с применением шаблона "Model-View-Controller" и технологии ASP.NET MVC Framework.

Обзор ASP.NET MVC Framework

После появления на свет платформы ASP.NET и инструмента ASP.NET для создания Web Forms она стала пользоваться большой популярностью среди разработчиков веб-приложений. Однако, мировая практика разработки приложений на ASP.NET Web Forms показала, что такой подход может способствовать смешиванию программного кода бизнес-логики с кодом представления. Особенно это характерно для неопытных разработчиков. Другими словами, разработчики создают приложения на основе ASP.NET Web Forms так, что код страницы содержит элементы логики, которые правильно бы было разместить в отдельных объектах. Кроме того, в типичных приложениях на основе ASP.NET Web Forms как правило отсутствуют элементы формирования "читаемых" адресов страниц. Также ASP.NET Web Forms провоцирует к появлению лишних элементов в HTML-разметке страницы (например, содержимое полей ViewState). Эти и другие проблемы, связанные с разработкой на основе ASP.NET Web Forms привели к появлению еще одного инструмента разработки веб-приложений в составе ASP.NETASP.NET MVC Framework.

В основе идеологии ASP.NET MVC Framework лежит идея разделения кода на три составляющие – модель (бизнес-логика), контроллер (обработка пользовательского ввода) и представление (генерируемый HTML-код). Эта идея описана в рамках шаблона проектирования "Model-View-Controller" (MVC), который применяется при разработке различных типов приложений; веб-приложения – это лишь один из примеров применения этого шаблона проектирования.

На самом деле использовать шаблон "Model-View-Controller" можно и в рамках ASP.NET Web Forms. Однако, как показывает практика, это делают лишь опытные профессионалы, которые долгое время занимаются разработкой веб-приложений. По умолчанию шаблоны проектов ASP.NET Web Forms не содержат упоминаний об этом шаблоне проектирования, и реализация этого шаблона полностью ложится на плечи разработчика.

Как уже упоминалось, основная идея шаблона проектирования "Model-View-Controller" состоит в том, что функциональность каждого пользовательского сценария разбивается на три части – модель, представление и контроллер. Модель в данном случае является тем местом, где реализуется вся бизнес-логика, определяются бизнес-процессы, происходит взаимодействие с уровнем доступа к данным и т.д. Кроме того, модель, как правило, определяет все базовые сущности, с которыми впоследствии оперируют остальные уровни.

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

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


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

Такое разделение программного кода позволяет добиться нескольких положительных эффектов, которые получаются из-за четкого разделения ответственности между объектами:

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

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

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

Таким образом, процесс обработки запроса в приложении на базе ASP.NET MVC Framework протекает следующим образом:

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

Для того, чтобы разрабатывать веб-приложения на основе ASP.NET MVC Framework необходимо загрузить соответствующую библиотеку с веб-сайта Microsoft. После установки этой библиотеки в составе Visual Studio появится дополнительный тип проекта – ASP.NET Web Application.

После создания нового приложения ASP.NET MVC Framework будет создана заготовка проекта, который имеет следующую структуру:


Как видно, проект ASP.NET MVC Framework имеет строго определенную структуру папок, в рамках которых размещаются соответствующие программные компоненты.

Обычно при разработке приложений на основе ASP.NET MVC Framework следующие папки содержат программные компоненты:

  • в папке "Controllers" размещаются все контроллеры, которые доступны в рамках приложения;
  • в папке "Models" содержатся все объекты бизнес-логики;
  • в папке "Views" содержаться все представления (страницы).

Кроме того, в составе приложения имеются дополнительные папки, которые содержат вспомогательные элементы:

  • папка "Content" содержит таблицы стилей (CSS), изображения и другие элементы, необходимые для генерации пользовательского интерфейса приложения;
  • папка "Scripts" содержит программный код на языке JavaScript, который выполняется в браузере на стороне клиента.

Таким образом, платформа ASP.NET MVC Framework стала дополнительной альтернативой ASP.NET Web Forms, которую можно использовать при разработке приложений на базе ASP.NET.

Краткие итоги

ASP.NET MVC Framework – это новая технология, которая является альтернативой подходу ASP.NET Web Forms. В рамках ASP.NET MVC Framework разработка ведется на основе шаблона проектирования "Model-View-Controller". Благодаря этому весь программный код разделяется на модель (бизнес-логику), представление (правила генерации кода HTML) и контроллер (правила обработки пользовательского ввода). Такое разделение позволяет снизить связность компонентов системы, что положительно влияет на качество разрабатываемого программного кода.

Марина Воробьева
Марина Воробьева
Виктория Ткаченко
Виктория Ткаченко

Проигрыватель не работает. После нажатия кнопки Play ничего не происходит.

Андрей Коробейников
Андрей Коробейников
Россия, Новосибирск, Сибирский государственный университет телекоммуникаций и информатики, 1999
Вадим Трунов
Вадим Трунов
Россия