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
является реализацией шаблона Model – View – Controller (модель – представление – контроллер),
который хорошо подходит для написания 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¶metr=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/]