Когда использовать ASP.NET MVC против ASP.NET Web Forms? - PullRequest
20 голосов
/ 17 июля 2009

Один из распространенных вопросов, касающихся ASP.NET MVC, заключается в том, почему вы должны использовать его в ASP.NET Web Forms? Ответ обычно включает ViewState и чистые URL-адреса, среди прочего. К концу вы найдете рекламу об использовании правильного инструмента для работы и о том, что он служит различным целям. Однако я не верю, что когда-либо видел, каковы эти цели. Итак, когда бы вы на самом деле выбрали ASP.NET MVC вместо ASP.NET Web Forms или ASP.NET Web Forms вместо ASP.NET MVC?

Ответы [ 6 ]

29 голосов
/ 17 июля 2009

Вы не выбираете ASP.Net MVC вместо ASP.Net, потому что ASP.Net MVC по-прежнему ASP.Net. Вы выбираете ASP.Net MVC или ASP.Net Web Forms, и для этого есть много веских причин:

  • Проще получить контроль над вашим HTML
  • Проще сделать юнит-тестирование
  • Мало "Gotchas"

С другой стороны, веб-формы имеют несколько преимуществ:

  • Очень просто собрать простые CRUD / бизнес-приложения вместе
  • Трудно побить производительность ViewState в локальной сети
  • Простая в освоении парадигма форм

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

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

10 голосов
/ 01 августа 2012

Используйте MVC, если все члены вашей команды достаточно опытны, чтобы управлять «контролем над HTML», иначе ваш код превратится в теговый суп .

Другими словами

bool useMvc = true;
foreach (TeamMember member in team.Members)
{
    useMvc = useMvc && member.IsSkilled;
} 
4 голосов
/ 17 июля 2009

Я дам вам пару целей с явными преимуществами.

  • Если ваша цель - это общедоступный веб-сайт, на котором будет использоваться трафик, используйте MVC. Оптимален для поисковой оптимизации.

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

4 голосов
/ 17 июля 2009

http://weblogs.asp.net/shijuvarghese/archive/2008/07/09/asp-net-mvc-vs-asp-net-web-form.aspx

проверь этот блог!

Итог "разделение интересов"

3 голосов
/ 03 октября 2009

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

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

1 голос
/ 14 марта 2018

Я работаю с веб-формами 13 лет, а MVC уже 2 года, и когда я начал работать с MVC, у меня возникли похожие вопросы. Вот мои выносы.

  • Самое главное: последний выпуск ASP.NET - 4.6, и они переходят на ASP.NET 5.0, но MS отказалась от этого для ASP.NET Core, который больше не поддерживает веб-формы (или даже VB.NET). Таким образом, это само по себе может дать вам ответ, когда вы решите, какую кроличью нору спустить.

Как говорится:

  • MVC Я считаю, что, как только вы освоите его, ПУТЬ легче работать с базовыми формами и любой простой «моделью», то есть таблицами с очень простым, простым набором отношений. например, заказы с таблицами, связанными с пользователями, продуктами и т. д. Как только вы начинаете сталкиваться с более сложными отношениями и должны возвращать множество условных наборов результатов, полагаться на параметры, иметь сложные хранимые процедуры ... тогда веб-формы гораздо лучше справиться с этим. Если вам не приходится сталкиваться с этим уровнем сложности, MVC делает разработку НАМНОГО более быстрой, особенно при работе с подходом, в котором у вас уже есть БД, потому что он уже создает большую часть кода и проверки для вас

  • Если вы не очень опытны в проектировании баз данных, MVC сделает всю работу за вас. Он может буквально построить базу данных для вас.

  • В MVC не так много встроенных элементов управления, которые есть в Web Forms (Gridview, FormViews, Sitemaps, Paged lists). Все должно быть написано с нуля, но, к счастью, многие люди уже придумали этот материал для вас в NuGet, который вы можете просто загрузить в свой проект

  • MVC сильно зависит от структуры вашего URL. Путь, строка запроса и т. Д. Если вы обнаружите, что вашему приложению нужно выполнять много форм POSTing вместо GET-ting, вам придется выполнить множество настроек или AJAX-публикаций. Если у вас есть установленный URL, который нельзя изменить, это может быть проблемой. Это выполнимо, но просто немного обманщик (или вы можете просто использовать Angular вместо этого).

  • MVC не имеет состояния просмотра. Если вам нужно скрыть переменные от поста к посту и сохранить их, это немного сложно. MVC имеет такие вещи, как ViewBag, который позволяет передавать данные с вашего контроллера на страницу, но он очищается после визуализации страницы. Существует также нечто, называемое «Tempdata», которое действует как состояние сеанса, но более временно. Тем не менее, он опирается на состояние сеанса, которое не является идеальным способом сохранения данных. Переменные сеанса и переменные tempdata подходят для данных уровня пользователя (информация профиля для человека, вошедшего в систему), но наличие двух разных вкладок, открытых одним и тем же пользователем, может привести к тому, что эти переменные сеанса / tempdata перезаписывают друг друга, когда вы имеете дело с фактические данные модели.

Если вы на распутье, я бы пошел с MVC. MS настаивает на этом, и поддержка веб-форм, вероятно, начнет исчезать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...