BC/NW 2011; №2 (19):3.1

 

СРАВНЕНИЕ ТЕХНОЛОГИЙ ASP.NET WebForms и ASP.NET MVC ДЛЯ СОЗДАНИЯ WEB ПРИЛОЖЕНИЙ

Борисова С.В., Крюков А.Ф., Шелехин А.Г.

(Национальный исследовательский университет «МЭИ», Россия)

 

В рамках платформы Microsoft .NET представлены две технологии создания web-приложений – это ASP.NET WebForms и ASP.NET MVC. Обе эти технологии полностью поддерживаются в .NET Framework 4.0 и продолжают развиваться. Одной из задач разработчиков на платформе .NET является выбор между двумя этими технологиями.

 

Технология ASP.NET WebForms появилась несколько раньше и на нее делалась ставка разработчиками Microsoft. Данная технология позволяет приблизить процесс разработки web-приложений к процессу разработки настольных приложений. В распоряжении разработчика имеется набор элементов управления, в которых входят как стандартные элементы, такие как текстовое поле, кнопка,  раскрывающийся список, так и специфические элементы управления, такие как элементы управления валидацией, календарь и т.п. Каждый элемент может быть декларативно размещен на форме. При этом разработчик освобождается от необходимости писать большое количество HTML кода: каждый элемент инкапсулирует HTML код, которым он будет заменен в конечном HTML представлении. Элементы управления настраиваются при помощи свойств, доступных разработчику для изменения. Для написания кода логики используется событийная модель, близкая разработчикам настольных приложений.  Сама страница, а также все расположенные на ней элементы управления имеют набор событий, для которых могут быть написаны обработчики.  Элементы управления для работы с данными позволяют быстро и удобно настроить элементы управления представлением для отображения, изменения и сохранения данных из БД практически без написания кода вручную.

Технологию ASP.NET WebForms можно рассматривать как некоторую надстройку над классическим принципом web-программирования «запрос-ответ».  Данная технология является примером концепции RAD (rapid application development — быстрая разработка приложений), позволяя разработчикам максимально быстро и комфортно создавать рабочие приложения.

ASP.NET MVC – это framework для создания Web-приложений на платформе .NET, который изначально развивался сторонними разработчиками как альтернатива WebForms и очень быстро получил популярность в сообществе разработчиков. В настоящее время он официально поддерживается и развивается сотрудниками корпорации Microsoft.

Данный framework является реализацией шаблона ModelViewController (модель – представление – контроллер), который хорошо подходит для написания web-приложений. Шаблон подразумевает разделение приложения на три основные компоненты, каждая из которых отвечает за свои задачи.

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

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

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

Как было сказано выше, WebForms предлагает концепцию, близкую к написанию настольных приложений, поэтому разработчик, хорошо знакомый с написанием настольных приложений очень быстро может перейти к web-разработке. Однако событийная модель в web-приложении имеет накладные расходы. За счет сохранения состояния страницы значительно увеличивается объем данных, которыми обмениваются клиент и сервер. Так, размер данных, отвечающих за состояния страницы, может в несколько раз превышать размер данных, отвечающих за отображение страницы, что может существенно снизить скорость работы с Web-приложением, особенно при низкой скорости интернет-соединения у пользователя. Также следует иметь в виду, что разработчик, не имеющий опыта Web-разработки и начинающий использовать WebForms, может быть введен в заблуждение относительно того, как именно происходит работа клиент-серверных приложений. Вследствие этого многое в WebForms происходит «за кулисами».

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

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

С точки зрения  поисковой оптимизации (SEO - Search Engine Optimization) следует учитывать тот факт, что в WebForms ключевые параметры запроса передаются в GET и в POST. Это ухудшает индексирование поисковыми системами, а также может привести к тому, что сохраненная ссылка на страницу может содержать информацию отличную от сохраняемой. В ASP.NET MVC ключевые параметры указаны в URL, поэтому такие страницы хорошо индексируются поисковыми системами, а также являются  более наглядными. К примеру, страница в стиле WebForms выглядит так: www.site.ru?id=1&parametr=true, а в стиле MVC так: www.site.ru/articles/2. 

К достоинствам ASP.NET WebForms можно отнести  [1]:

·        хорошие возможности для RAD (быстрой разработки приложений);

·        возможность декларативного создания страниц;

·        простота разработки бизнес-приложений, работающих с большими объемами данных и завязанных на данных;

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

·        большое количество библиотек сторонних разработчиков.

К недостаткам ASP.NET WebForms можно отнести:

·        логика представления тесно связана с кодом и, таким образом, сложно отделима;

·        сложно производить модульное тестирование;

·        большой размер страницы за счет использования сохранения состояния;

·        отсутствие контроля над генерируемой HTML разметкой;

·        URL адреса некорректны с точки зрения SEO.

К достоинствам ASP.NET MVC можно отнести:

·        полный контроль над генерируемым HTML кодом;

·        лучшее разделение между кодом логики и кодом представления;

·        широкие возможности для модульного тестирования;

·        правильные URL адреса с точки зрения SEO и восприятия;

·        страница имеет меньший размер за счет отсутствия сохранения состояния.

К недостаткам ASP.NET MVC можно отнести:

·        увеличение времени разработки приложения;

·        в настоящее время количество библиотек сторонних разработчиков невелико.

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

Литература

1.     Веб-сайт «Habrahabr» [http://habrahabr.ru/blogs/net/47249/]