Pull to refresh

ASP.NET MVC vs. WebForms

.NET *
Translation
Original author: Vaibhav
Всем привет.

Нашел хорошую статью по сравнению основных аспектов двух современных подходов к разработке на ASP.NET.

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

Итак…


В то время как многие начинают использовать ASP.NET в своих проектах, а Microsoft выпускает новые фреймворки, все чаще встает вопрос о том, какую из моделей использовать — «классический ASP.NET» (называемый WebForms), то есть использовать модель, предлагаемую по-умолчанию или же новоиспеченный ASP.NET MVC. Также многим кажется, что Microsoft вносит смуту, говоря о том, что они будут полноценно поддерживать и развивать обе модели. И поскольку каждый проект можно сделать и с помощью WebForms и с помощью MVC, зачастую встает вопрос — «а что же лучше для моего проекта?» Один из хороших способов ответить на этот вопрос — провести SWOT-анализ обоих подходов.

SWOT-анализ ASP.NET MVC


Strengths (Сильные стороны)
  • Предлагает полный контроль над генерирумым HTML-кодом;
  • Генерирует чистый HTML-код;
  • Лучшее разделение между UI и кодом (логикой приложения и логикой представления);
  • Проще для unit-тестирования;
  • Поддерживает множество различных движков представления (View Engines);
  • По-умолчанию использует REST-подход для URL'ов — что также хорошо для SEO;
  • Нет ViewState (это также может быть недостатком в определенных случаях);
  • Обычный размер загружаемой страницы — маленький;
  • Простая интеграция с фреймворками типа JQuery.

Weaknesses (Слабые стороны)
  • Не основан на (серверных) событиях, так что может быть сложноватым для освоения теми, кто мыслит в разрезе модели ASP.NET WebForms;
  • Количество библиотек контролов и компонентов сторонних производителей небольшое;
  • Нет ViewState (также является преимуществом).

Opportunities (Возможности)
  • Позволяет использовать подход Test Driven Development (TDD) — фреймворк построен по большей части с акцентом на TDD, так что с MVC куда проще писать юнит-тесты, создавать mock-объекты и перехватывать выполнение приложения, контролируя его на всех этапах;
  • Позволяет повторно использовать модель приложения с другими UI-интерфейсами и приложениями.

Threats (Угрозы)
  • Требует больше времени для начала продуктивной работы с ним и больше времени на освоение новичками в веб-разработке.

SWOT-анализ ASP.NET WebForms


Strengths (Сильные стороны)
  • Предоставляет отличные возможности для RAD (Rapid Application Development, быстрая разработка приложений);
  • Отличная поддержка «дизайнера» в Visual Studio;
  • Простота разработки бизнес-приложений, работающих с большими объемами данных и завязанных на данных (data-heavy);
  • Огромное количество третьих компаний, предоставляющих готовые библиотеки контролов, а также осуществляющие поддержку проектов на WebForms;
  • Привычная Windows Forms-разработчикам концепция событий (серверные события для UI), что позволяет быстро начать работать с таким подходом.

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

Opportunities (Возможности)
  • Отлично подходит для быстрого создания прототипов бизнес-приложений. Это отлично работает, когда необходимо согласовать с потенциальным клиентом предварительную концепцию.

Threats (Угрозы)
  • Сложно применять к одному приложения разные UI, даже несмотря на достаточное количество доступных фреймворков и технологий (Master-страницы, темы, и т. д.).

Основываясь на всех этих доводах, можно представить процесс принятия решения в пользу того или иного подхода таким образом:

Схема принятия решения по подходу ASP.NET

Резюмируя эту схему, можно сделать два ключевых вывода, определяющих выбор подхода:
  • Test Driven Development (Разработка с помощью тестов) – жизнь будет МНОГО проще, если использовать MVC при использовании практики TDD.
  • Data Driven Application – жизнь будет МНОГО проще, если использовать WebForms в то время как приложение работает с огромным количеством разнообразных данных.

Разумеется, здесь нет никаких однозначных «да» или «нет» и каждое конкретное приложение может быть написано как одним, так и другим способом. Фактически, можно использовать даже смешанный подход, написав часть приложения с использованием WebForms, а часть с помощью MVC (теоретически).

А как думаете вы?


И вот как раз по поводу вопроса автора о том, как же думаем мы — предлагаю высказываться в комментариях. Заодно, предлагаю расширить пункты SWOT-анализа по обоим подходам.
Tags:
Hubs:
Total votes 30: ↑22 and ↓8 +14
Views 54K
Comments Comments 46