ASP.NET MVC создал веб-формы для устаревшей платформы?

На прошлой неделе в Mix '09 была выпущена окончательная версия ASP.NET MVC 1.0.

Некоторые из заявленных преимуществ этой структуры:

  • Четкое разделение проблем
  • Testability - поддержка разработки, основанной на тестах
  • Точный контроль над HTML и JavaScript
  • Интуитивные URL-адреса

Теперь Microsoft осторожно рассматривает это как "альтернативу, а не замену для веб-форм ASP.NET", но, учитывая преимущества, упомянутые выше, мне интересно:

  • Как долго это будет, пока "классические" веб-формы ASP.NET не будут считаться "устаревшей" структурой?
  • Если бы вы начали разработку нового веб-проекта .NET сегодня, почему вы решили использовать Web Forms вместо предложения ASP.NET MVC?

Ответ 1

Хорошие вопросы. Я думаю, что в конечном счете, ответ будет экспертом команды разработчиков и проектами, которые будут решать это. Веб-формы ASP.NET так сильно используются, что в скором времени он не исчезнет. Кроме того, существует так много пользовательских элементов управления и сторонней поддержки, как компоненты и книги. Основным преимуществом веб-форм является то, как легко получить динамический веб-сайт и продолжить работу. Это действительно RAD-способ разработки веб-сайтов.

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

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

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

Я как бы думаю о веб-формах, например, о том, как VB1 изменил способ создания приложений Windows на рабочем столе. До сих пор RAD-способ создания приложения все еще существует и никогда не исчезнет.

Ответ 2

Имейте в виду, что MVC STILL использует WebForms для него по умолчанию View Engine. Конечно, вы можете заменить его другим, но WebForms по-прежнему является его основной частью.

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

И не являются ли файлы .asmx технически частью "старой" модели? Я могу с уверенностью сказать, что многие люди не захотят, чтобы они ушли.

Тем не менее, я лично вижу, что ASP.net MVC становится основным веб-движком для ASP.net в будущем, хотя и не в .net 4.0.

Ответ 3

Вы спрашиваете, когда недавно выпущенная веб-платформа ASP.NET MVC заменит Web Forms, которая существует уже семь лет.

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

Мы даже знали, как сделать их проверяемыми, и отделить презентацию от бизнес-логики и доступа к данным. ASP.NET MVC может обеспечить соблюдение этого разделения, но я сделал это, используя стандарты кодирования и обзоры кода, и сказал: "Нет unit test для этого" и "вывести эту бизнес-логику из пользовательского интерфейса".

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

Ответ 4

Я не верю, что WebForms когда-нибудь удалится.

Я использую WebForms для работы в бизнес-приложениях и MVC дома для некоторых частных вещей. Хотя мне действительно нравится MVC, я не вижу, как это возможно для реализации действительно сложной логики пользовательского интерфейса с HTML/CSS/JavaScript. Он быстро станет неуправляемым и будет совершенно небезопасным, поскольку JavaScript можно отключить, чтобы предотвратить отключение некоторых элементов управления или скрытие некоторой информации. Наоборот, отключение JavaScript с помощью WebForms фактически приведет к потере страницы для каких-либо действий, либо разрешенных, либо нет.

Обе платформы будут продолжать развиваться. Для общих веб-сайтов и любителей HTML/CSS MVC - это способ, при помощи сложных приложений вам нужна объектно-ориентированная архитектура и обработка искусственных событий, даже если она абстрагирует вас от безгражданности HTTP.

Итак, возьмите то, что лучше для вас.

P.S. Удаление WebForms в целом поставит под угрозу будущее многочисленных проектов и компаний по всему миру. Люди Microsoft не хотели бы стать объектом ненависти и триггером, начавшим третью мировую войну.

Ответ 5

WebForms по-прежнему будет иметь место для тех, кто хочет иметь псевдопартийное веб-приложение, которое можно легко собрать, перетаскивая. Для тех, кому не нужно или нужно понимать, как работает HTTP. Это конечная версия RAD для веб-приложений.

ASP.NET MVC с другой стороны позволяет намного более тонкий контроль за счет большей ответственности. Вы получаете полный контроль над своим HTML, но это означает, что вам нужно самостоятельно санировать/кодировать ваш результат. Ваше приложение по большей части должно быть полностью без гражданства, а для некоторых разработчиков ASP.NET WebForms/Windows WinForms это немного сложно обдумать.

Я не думаю, что когда-либо будет доминировать над другим, хотя может быть одобрено.