TOC

This article is currently in the process of being translated into Russian (~99% done).

Introduction:

ASP.NET MVC vs. Web Forms

Первая версия ASP.NET была выпущена в 2002 году, c единственным доступным движком WebForms. Позднее, чтобы поддерживать что-то подобное MVC, Microsoft расширила ASP.NET, чтобы поддерживать множество движков отображения, но многие годы, если вы использовали ASP.NET вы также автоматически использовали WebForms.

Создавая веб-формы (Web Forms), Microsoft преследовала весьма амбициозную цель: они хотели абстрагироваться от реализации протокола HTTP и отсутствия у него состояний, и сделать веб-разработку больше похожей на разработку приложения для Windows, которое на тот момент уже доставляло довольно приятные впечатления.

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

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

Что не так с Web Forms

Web Forms был свежим глотком воздуха для многих разработчиков, и вероятно помог многим начинающим разработчикам, или разработчикам знакомым только с разработкой приложений для Windows, ознакомится с созданием веб-приложений. К сожалению Microsoft не удалось создать идеальный и безупречный продукт, потому что множество проблем быстро вылезли наружу. Некоторые из них были исправлены в следующих релизах, пока остальные, были более фундаментальными для Web Forms и труднее подвергались изменению. Web Forms чаще всего критиковали за такие вещи:

ViewState делает страницы более тяжеловесными

Отслеживая каждый серверный элемент управления на странице в строке ViewState, которая туда сюда пересылается между сервером при каждом запросе, Web Form страницы стали немного тяжелее. Если вы разрабатывали страницы средней сложности, результирующая строка ViewState могла привести к увеличению размера в несколько сотен килобайт. Это могло вызвать более долгую загрузку, особенно при мобильном соединении и с увеличением мирового трафика от смартфонов, это стало настоящей проблемой.

Серверные элементы управления ограничивают ваш контроль над результирующей HTML разметкой.

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

Web Forms плохо подходят для автоматического тестирования

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

Где ASP.NET MVC является улучшением относительно Web-форм

ASP.NET MVC избавляется от множества абстракций, реализованных в Web-формах. Для примера, теперь вы обычно генерируете всю HTML разметку самостоятельно, вместо того, чтобы полагаться на серверные элементы управления. Кроме того, ViewState больше не поддерживается для вас, что эффективно устраняет эту проблему (но также, делает бесполезным одновременную отрисовку нескольких серверных элементов, таких как GridView и Repeater).

Модель MVC отлично подходит для автоматического/модульного тестирования за счет слабой связности между различными слоями.

Какую технологию вам следует выбрать?

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

Если вы уже знаете как использовать Web-формы, вам определенно следует попробовать ASP.NET MVC, особенно если вас так же беспокоили вышеперечисленные проблемы. Если вы новичок в web-разработке и вам нужно определиться между двумя технологиями, я все же рекомендую попробовать ASP.NET MVC. Модель MVC для некоторых может показаться немного ограничивающей и следование паттерну очевидно сложнее на старте, чем не следование ему, но как только вы привыкнете, то работать с ним станет одним удовольствием и, судя по всему вниманию, уделяемому модели MVC, оно вряд ли исчезнет в ближайшее время.

Резюме

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


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!