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

ASP.NET Web Forms

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

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

Резюмируя

ASP.NET Web Forms идеально подходит для быстрой разработки и запуска продукта. Время на разработку элементов управления практически не требуется, почти всё есть “из коробки”, а чего нет, то можно скачать. Порог вхождения для разработчиков достаточно низкий, особенно для тех, кто имел дело с WinForms (используется такая же модель событий).

ASP.NET MVC

ASP.NET MVC появился позже, чем Web Forms. Microsoft пересмотрели подход, и в основу легла концепция MVC (model-view-controller). Здесь уже не найти горы готовых элементов управления и серверных событий элементов управления. Но благодаря всему этому ASP.NET MVC обрела дополнительную гибкость.

Все элементы управления создаются вручную или с помощью специальных html-хелперов. Минимум генерируемого кода, а значит элементы управления можно самостоятельно кастомизировать. На смену postback’ов пришли обычные формы.

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

Резюмируя

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