Самое большое преимущество к использованию ASP.Net MVC против веб-форм

Каковы некоторые из преимуществ использования одного над другим?

19 ответов


основные преимущества ASP.net MVC являются:

  1. включает полный контроль над отображаемым HTML.

  2. обеспечивает чистое разделение проблем (SoC).

  3. позволяет развитие управляемое испытанием (TDD).

  4. Простая интеграция с фреймворками JavaScript.

  5. следовать конструкцией безгосударственной природы сеть.

  6. RESTful urls, который позволяет SEO.

  7. нет событий ViewState и PostBack

основное преимущество ASP.net Веб-Форма являются:

  1. обеспечивает рад развитие

  2. простая модель разработки для разработчиков, поступающих из winform development.


ASP.NET веб-формы и MVC - это две веб-структуры, разработанные Microsoft, - оба они являются хорошим выбором. Ни один из веб-фреймворков не должен быть заменен другим, и нет планов их "слияния" в единую структуру. Дальнейшая поддержка и разработка выполняются параллельно Microsoft, и ни один из них не будет "уходить".

каждая из этих веб-фреймворков предлагает преимущества / недостатки - некоторые из которых необходимо учитывать при разработке веб-приложения. Ля веб-приложение может быть разработано с использованием любой технологии - это может сделать разработку для конкретного приложения проще выбрать одну технологию по сравнению с другой и наоборот.

ASP.NET веб-формы:

  • развитие поддерживает состояние * Создает иллюзию, что веб-приложение знает о том, что делает пользователь, подобно приложениям Windows. Т. е. Делает функциональность "мастера" немного проще в реализации. Сеть формы отлично справляются с тем, чтобы скрыть большую часть этой сложности от разработчика.
  • Быстрая разработка приложений (RAD) * Возможность просто "прыгнуть" и начать доставку веб-форм. Это оспаривается некоторыми из сообщества MVC, но подталкивается Microsoft. В конце концов, все сводится к уровню знаний разработчика и тому, что им комфортно. Модель веб-форм, вероятно, имеет меньшую кривую обучения для менее опытных разработчики.
  • больший набор инструментов управления • ASP.NET веб-формы предлагают гораздо больший и более надежный набор инструментов (веб-элементы управления), тогда как MVC предлагает более примитивный набор элементов управления, больше полагающийся на богатые элементы управления на стороне клиента через jQuery (Javascript).
  • зрелые • Это было вокруг начиная с 2002 года, и обилие информации относительно вопросов, проблем и т. д. Предлагает больше стороннего контроля-необходимо учитывать существующие набор инструментов.

ASP.NET MVC:

  • разделение проблем (SoC) • С технической точки зрения организация кода в MVC очень чистая, организованная и гранулированная, что облегчает (надеюсь) масштабирование веб-приложения с точки зрения функциональности. Повышает большую конструкцию от точки зрения развития.
  • более легкая интеграция с инструментами на стороне клиента (богатые инструменты пользовательского интерфейса) • Более чем когда-либо, веб-приложения становятся все более богатыми, как приложения, которые вы видите на своих рабочих столах. С MVC это дает вам возможность интегрировать с такими наборами инструментов (например, jQuery) с большей легкостью и более бесшовными, чем в веб-формах.
  • поисковая оптимизация (SEO) дружественный / без гражданства * URL-адреса более дружелюбны к поисковым системам (т. е. mywebapplication.com/users/ 1-получить пользователя с идентификатором 1 vs mywebapplication / users / getuser.aspx (id прошло в сессии)). Аналогично, поскольку MVC не имеет состояния, это устраняет головную боль пользователей, которые порождают несколько веб-браузеров из одного окна (конфликты сеансов). В том же духе MVC придерживается веб-протокола без гражданства, а не "борется" с ним.
  • хорошо работает с разработчиками, которые нуждаются в высокой степени контроля • Многие элементы управления в ASP.NET веб-формы автоматически генерируют большую часть необработанного HTML, который вы видите при отображении страницы. Это может вызвать головные боли для разработчиков. С MVC он лучше подходит для полного контроля над тем, что отображается, и нет никаких сюрпризов. Еще более важно то, что HTML - формы обычно намного меньше, чем веб-формы, которые могут приравниваться к повышению производительности-что-то серьезно рассмотреть.
  • развитие управляемое тестом (TDD) • С MVC, вы можете легко создавать тесты для веб-части. Дополнительный уровень тестирования обеспечит еще еще один уровень защиты от неожиданного поведения.

аутентификация, авторизация, конфигурация, компиляция и развертывание-это все функции, которые shared между двумя веб-платформ.


любой, кто достаточно стар, чтобы помнить классический ASP, вспомнит кошмар открытия страницы с кодом, смешанным с html и javascript - даже самая маленькая страница была болью, чтобы понять, что, черт возьми, она делала. Я могу ошибаться, и я надеюсь, что это так, но MVC похоже на возвращение к тем плохим старым дням.

когда ASP.Net его приветствовали как спасителя, отделяя код от контента и позволяя веб-дизайнерам создавать html, а кодеры работать над кодом. Если мы не хотели использовать ViewState, мы отключили его. Если бы мы по какой-то причине не хотели использовать код, мы могли бы разместить наш код внутри html, как классический ASP. Если мы не хотели использовать PostBack, мы перенаправлялись на другую страницу для обработки. Если бы мы не хотели использовать ASP.Net элементы управления мы использовали стандартные элементы управления html. Мы могли бы даже опросить объект ответа, если бы не хотели использовать ASP.Net runat= "сервер" на наших элементах управления.

теперь кто-то в своей великой мудрости (вероятно кто-то, кто никогда не программировал классический ASP), решил, что пришло время вернуться к Дням смешивания кода с контентом и назвать его "разделение проблем". Конечно, вы можете создать более чистый html, но вы можете с классическим ASP. Сказать: "вы неправильно программируете, если у вас слишком много кода в вашем представлении" - это все равно что сказать: "если вы написали хорошо структурированный и прокомментированный код в классическом ASP, он намного чище и лучше, чем ASP.NET"

Если бы я хотел вернуться к смешиванию кода с контентом Я бы посмотрел на разработку с использованием PHP, который имеет гораздо более зрелую среду для такого развития. Если есть так много проблем с ASP.NET тогда почему бы не исправить эти проблемы?

и последнее, но не менее важное: новый движок Razor означает, что еще сложнее различать html и код. По крайней мере, мы могли бы искать открывающие и закрывающие теги, т. е. в ASP, но теперь единственным указанием будет символ@.

возможно, пришло время перейти на PHP и подождать еще 10 лет кто-то, чтобы снова отделить код от контента.


Если вы работаете с другими разработчиками, такими как PHP или JSP (и я предполагаю, rails) - вам будет намного проще конвертировать или сотрудничать на страницах, потому что у вас не будет всех этих "неприятных" ASP.NET события и контроль повсюду.


проблема с MVC заключается в том, что даже для "экспертов" это съедает много времени и требует много усилий. Бизнес управляется основным "быстрым решением, которое работает" независимо от технологии, стоящей за ним. WebForms-это технология RAD, которая экономит время и деньги. Все, что требует больше времени, неприемлемо для бизнеса.


  1. правильный AJAX, например JSONResults no частичная страница postback ерунда.
  2. нет viewstate +1
  3. нет переименования идентификаторов HTML.
  4. чистый HTML = нет раздувания и приличный выстрел при рендеринге XHTML или стандартов совместимые страницы.
  5. больше не генерируется AXD javascript.

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


Я не видел никаких преимуществ в MVC над ASP.Net - ... 10 лет назад Microsoft придумала UIP (процесс пользовательского интерфейса) в качестве ответа на MVC. Это был провал. Мы сделали большой проект (4 разработчика, 2 дизайнера, 1 тестер) с UIP тогда, и это был сущий кошмар.

не просто прыгать в победителя ради шумихи. Все перечисленные выше преимущества уже доступны в Asp.Net (с более большими настройками [ новые функции в Asp.Net 4 ] в Asp.Net 4).

Если ваша команда разработчиков или отдельные семейства разработчиков с Asp.Net просто придерживайтесь его и быстро делайте красивые продукты, чтобы удовлетворить ваших клиентов (которые платят за ваши рабочие часы). MVC съест ваше драгоценное время и даст те же результаты, что и Asp.Net : -)


Фрэнсис Шанахан,

  1. Почему вы называете частичную обратную связь "ерундой"? Это основная функция Ajax и очень хорошо используется в Atlas framework и замечательных сторонних элементах управления, таких как Telerik

  2. Я согласен с вашей точкой зрения относительно viewstate. Но если разработчики будут осторожны, чтобы отключить viewstate, это может значительно уменьшить размер HTML, который отображается таким образом, страница становится легкой вес.

  3. переименовываются только серверные элементы управления HTML ASP.NET модель веб-формы, а не чистые элементы управления html. Что бы это ни было, почему вы так беспокоитесь, если переименование сделано? Я знаю, что вы хотите иметь дело с большим количеством событий javascript на стороне клиента, но если вы создадите свои веб-страницы умно, вы определенно можете получить все идентификаторы, которые хотите

  4. даже ASP.NET веб-формы соответствуют стандартам XHTML, и я не вижу никакого раздувания. Это не оправдание почему нам нужен шаблон MVC

  5. опять же, Почему вас беспокоит AXD Javascript? Почему это причиняет тебе боль? Это опять-таки не оправдание

до сих пор я поклонник разработки приложений с использованием classic ASP.NET веб-формы. Например: если вы хотите связать выпадающий список или gridview, вам нужно максимум 30 минут и не более 20 строк кода (минимальный, конечно). Но в случае с MVC, поговорите с разработчиками, как это больно есть.

самым большим недостатком MVC является то, что мы возвращаемся к Дням ASP. Помните спагетти-код смешивания кода сервера и HTML??? Боже мой, попробуйте прочитать страницу MVC aspx, смешанную с javascript, HTML, JQuery, CSS, серверными тегами и чем нет....Любой может ответить на этот вопрос?


веб-формы также получают большую зрелость и поддержку от сторонних поставщиков управления, таких как Telerik.


в webforms вы также можете отображать почти весь html вручную, за исключением нескольких тегов, таких как viewstate, eventvalidation и подобных, которые могут быть удалены с помощью PageAdapters. Никто не заставляет вас использовать GridView или какой-либо другой серверный элемент управления, который имеет плохой вывод рендеринга html.

Я бы сказал, что самым большим преимуществом MVC является скорость!

Далее идет принудительное разделение беспокойства. Но это не запрещает вам помещать всю логику BL и DAL внутри контроллера/действия! Просто ... разделение представления, которое может быть сделано также в webforms (например, шаблон MVP). Многое из того, что люди упоминают для mvc, можно сделать в webforms, но с некоторыми дополнительными усилиями.
Основное отличие заключается в том, что запрос поступает в контроллер, а не в представление, и эти два слоя разделены, а не связаны через частичный класс, как в webforms (aspx + код позади)


мои 2 цента:

  • ASP.net формы отлично подходит для быстрой разработки приложений и добавления стоимости бизнеса быстро. Я все еще использую его для большинства приложений интрасети.
  • MVC отлично подходит для поисковой оптимизации, поскольку вы контролируете URL и HTML в большей степени
  • MVC обычно создает гораздо более компактную страницу-нет viewstate и чистого HTML = быстрое время загрузки
  • MVC легко кэшировать части страницы. -MVC-это весело писать :- личное мнение ;-)

MVC позволяет вам иметь более одной формы на странице, небольшая функция, которую я знаю, но это удобно!

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


контроллер MVC:

    [HttpGet]
    public ActionResult DetailList(ImportDetailSearchModel model)
    {
        Data.ImportDataAccess ida = new Data.ImportDataAccess();
        List<Data.ImportDetailData> data = ida.GetImportDetails(model.FileId, model.FailuresOnly);

        return PartialView("ImportSummaryDetailPartial", data);
    }

вид MVC:

<table class="sortable">
<thead>
    <tr><th>Unique Id</th><th class="left">Error Type</th><th class="left">Field</th><th class="left">Message</th><th class="left">State</th></tr>
</thead>
<tbody>
    @foreach (Data.ImportDetailData detail in Model)
    {
    <tr><th>@detail.UniqueID</th><th class="left">@detail.ErrorType</th><th class="left">@detail.FieldName</th><th class="left">@detail.Message</th><th class="left">@detail.ItemState</th></tr>
    }
</tbody></table>

насколько это трудно? Нет ViewState, нет жизненного цикла Страницы BS...Просто чистый эффективный код.


Я вижу только два преимущества для небольших сайтов: 6) RESTful urls, который позволяет SEO. 7) нет событий ViewState и PostBack (и большей производительности в целом)

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

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


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

Webforms и MVC являются жизнеспособными инструментами, оба excel в разных областях.

Я лично использую веб-формы, поскольку мы в первую очередь разрабатываем приложения B2B/ LOB. Но мы всегда делаем это с шаблоном MVP, с которым мы можем достичь 95 + % покрытия кода для нашего устройства тесты. Это также позволяет нам автоматизировать тестирование свойств webcontrols значение свойства отображается через представление, например

bool IMyView.IsAdminSectionVisible{
       get{return pnlAdmin.Visible;}
       get{pnlAdmin.Visible=value;}
    }

) Я не думаю, что этот уровень тестирования так же легко достигается в MVC, не загрязняя мою модель.


вы больше не чувствуете себя плохо из-за использования "non post-back controls" - и выяснения того, как разбить их на традиционный asp.net окружающая среда.

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


современные элементы управления javascript, а также запросы JSON могут быть обработаны очень легко с помощью MVC. Там мы можем использовать множество других механизмов для публикации данных от одного действия к другому. Вот почему мы предпочитаем MVC и веб-форм. Также мы можем построить облегченные страницы.


мое личное мнение, что, Самое большое Dis-преимущество к использованию ASP.Net MVC это CODE BLOCKS смешанные с HTML...
html ад для разработчиков, которые его поддерживают...