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

Подходы к построению приложений на основе ASP.NET

ASP.NET MVC Framework

Технология ASP.NET MVC Framework – это сравнительно новый инструмент, который появился в составе Microsoft ASP.NET. Многие годы развития Microsoft ASP.NET эту платформу связывали именно с ASP.NET Web Forms. Однако, несмотря на все преимущества этого инструмента, он обладает рядом недостатков, с которыми разработчиками постоянно приходилось мириться:

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

Эти и другие проблемы заставили разработчиков задуматься над вопросами разработки приложений для платформы ASP.NET и предложить обновленный, более гибкий инструмент – ASP.NET MVC Framework.

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

модель (model) содержит бизнес-логику приложения;
представление (view) содержит программный код генерации представления (HTML-кода);
контроллер (controller) содержит программный код обработки пользовательского ввода, вызов нужных методов модели и создание объекта представления.

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


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

Во-первых, в ASP.NET MVC Framework на уровне платформы заложена идеология разделения кода. Аналогичные шаблоны проектирования можно использовать и в ASP.NET Web Forms, однако, в ASP.NET MVC Framework они доступны на уровне идеи самой платформы.

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

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


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

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

Следует отметить, что проект ASP.NET MVC Framework разрабатывается командой в составе Microsoft, но при этом является проектом с открытым исходным кодом. Это означает, что любой желающий может получить доступ к исходным кодам проекта ASP.NET MVC Framework. Также существует проект сообщества разработчиков, который называется MVC Contrib . Эта библиотека содержит набор улучшений для основной функциональности ASP.NET MVC Framework.

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

Платформа ASP.NET MVC Framework работает в рамках общей среды исполнения приложений ASP.NET и является альтернативой ASP.NET Web Forms. В отличие от ASP.NET Web Forms, платформа ASP.NET MVC Framework позволяет разрабатывать более гибкие приложения. В ASP.NET MVC Framework весь программный код делится на модель (model), представление (view) и контроллер (controller).

Какой инструмент выбрать в конкретном случае?

Появление технологии ASP.NET MVC Framework и ее успех на рынке породило множество предположений о том, что Microsoft планирует отказаться от дальнейшего развития ASP.NET Web Forms. Однако при более детальном рассмотрении каждого из подходов становится понятно, что каждый из подходов обладает рядом преимуществ и каждую из этих технологий хорошо использовать в конкретных ситуациях. Давайте более подробно рассмотрим преимущества и недостатки каждой из платформ.

Приложения на базе ASP.NET Web Forms как правило состоят из набора форм с состояниями. Каждая форма состоит из набора элементов управления, которые реализуют готовую функциональность. Это зачастую очень удобно, когда требуется создавать набор различных форм по аналогии с настольным приложением и при этом не заботиться о таких механизмах как сохранение состояния или реализация сложных элементов управления (например, таблиц, календарей и т.д.).

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

Также не стоит забывать о том, что ASP.NET Web Forms исторически появилась намного раньше, чем ASP.NET MVC Framework. А это означает, что за время существования ASP.NET Web Forms появилось огромное количество решений от сторонних разработчиков, как платных, так и бесплатных. Это позволяет с достаточно большой вероятностью говорить о том, что в случае, если потребуется какое-либо нестандартное поведение в рамках приложения ASP.NET, то в случае использования ASP.NET Web Forms его можно будет найти среди разработок других производителей.

Однако, ASP.NET Web Forms обладает недостатками. К основным недостаткам можно отнести то, что модель исполнения ASP.NET Web Forms в некоторой степени изолирует разработчика от "родного" для веб-приложений процесса, модели "запрос-ответ". Вместо этого предлагается рассматривать разработку веб-приложения с позиции разработки настольного приложения. Иногда это вносит ряд неудобств и создает излишние накладные расходы. Кроме того, ASP.NET Web Forms не позволяет получить полный контроль над получаемым в итоге HTML-кодом. Поскольку большую часть HTML-кода генерируют сами элементы управления, то разработчику остается надеяться на то, что генерируемый ими HTML-код будет построен корректно. Наконец, ASP.NET Web Forms не стимулирует разработчиков разделять код. Многие приложения на базе ASP.NET Web Forms внутри программного кода самой страницы (по сути, представления) содержат код по обработке запроса, код бизнес-логики и т.д.

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

Более того, при разработке веб-приложений на базе ASP.NET MVC Framework разработчики более приближены к "родному" процессу обработки запроса, к модели "запрос-ответ". В ASP.NET MVC Framework нет абстрагирования от этого процесса, что в какой-то степени делает разработку приложения более прозрачной.

За счет того, что в ASP.NET MVC Framework отсутствует понятие элемента управления, становится возможным говорить о том, что разработчик веб-приложения имеет действительно полный контроль над разметкой HTML, которая получается в результате работы приложения. Веб-разработчик более не зависит от разработчиков элементов управления и может сам определять, как именно должен строиться HTML-код в его приложении.

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

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

Таким образом, можно сделать вывод, что каждая из платформ хорошо подходит для своего круга задач. Можно резюмировать вышесказанное следующим образом. Платформа ASP.NET Web Forms наиболее удачно подходит для следующих случаев:

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

С другой стороны, платформа ASP.NET MVC Framework наиболее удачно подходит для других случаев:

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

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

С появлением ASP.NET MVC Framework у разработчика встал выбор – что использовать ASP.NET MVC Framework или ASP.NET Web Forms. Общий ответ на этот вопрос заключается в том, что обе платформы на сегодняшний день активно развиваются, а что выбрать из этих двух вариантов зависит от того, в каких условиях находится разработчик и какого типа проект ему предстоит разрабатывать.

Контрольные вопросы

  • В чем заключаются трудности при разработке веб-приложений?
  • Опишите процесс обработки запроса веб-приложением.
  • Для чего веб-сервер удаляет всю информацию, связанную с пользователем после обработки запроса?
  • Что такое ASP.NET Web Forms?
  • В чем заключаются преимущества ASP.NET Web Forms перед классическим созданием HTML-кода?
  • Что такое элемент управления ASP.NET Web Forms и какова его роль при построении приложений?
  • Что такое ASP.NET MVC Framework?
  • В чем заключаются преимущества ASP.NET MVC Framework?
  • Какие составляющие есть в приложении ASP.NET MVC Framework?
  • Что такое Helpers в терминологии ASP.NET MVC Framework?
  • Приведите примеры проектов, которые удобнее разрабатывать на основе ASP.NET Web Forms.
  • Приведите примеры проектов, которые удобнее разрабатывать на основе ASP.NET MVC Framework.
Марина Воробьева
Марина Воробьева
Виктория Ткаченко
Виктория Ткаченко

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

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