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

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

Ответ 1

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

  • Позволяет полностью контролировать отображаемый HTML.

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

  • Включает Test Driven Development (TDD).

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

  • Следуя дизайну безгражданности веб-сайта.

  • URL-адреса RESTful, которые позволяют SEO.

  • Нет событий ViewState и PostBack

Основным преимуществом веб-формы ASP.net является:

  • Он обеспечивает RAD

  • Простая модель разработки для разработчиков, которые приходят из разработки winform.

Ответ 2

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

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

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

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

ASP.NET MVC:

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

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

Ответ 3

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

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

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

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

  • Правильный AJAX, например. JSONResults нет частичная пересылка почты.
  • no viewstate +1
  • Без переименования HTML-идентификаторов.
  • Очистить HTML = нет раздувания и иметь достойный снимок при рендеринге XHTML или стандартов совместимых страниц.
  • Больше не создано javascript AXD.

Ответ 7

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

Ответ 8

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

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

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

Ответ 9

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

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

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

  • Только элементы управления HTML-сервером переименовываются в модель ASP.NET Web Form, а не чистые элементы управления html. Как бы то ни было, почему вы так волнуетесь, если переименование сделано? Я знаю, что вы хотите иметь дело со многими событиями javascript на стороне клиента, но если вы будете проектировать свои веб-страницы с умом, вы можете определенно получить все, что захотите.

  • Даже ASP.NET Web Forms соответствует стандартам XHTML, и я не вижу раздувания. Это не оправдание того, почему нам нужен шаблон MVC

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

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

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

Ответ 10

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

Ответ 11

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

Я бы сказал, что самое большое преимущество MVC - СКОРОСТЬ!

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

Ответ 12

Мои 2 цента:

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

Ответ 13

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

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

Ответ 14

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... Просто чистый эффективный код.

Ответ 15

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

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

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

Ответ 16

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

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

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

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

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

Ответ 17

Вы не чувствуете себя плохо в использовании элементов управления "без пост-обратно" и выясняете, как имитировать их в традиционной среде asp.net.

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

Ответ 18

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

Ответ 19

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