Следует ли мне перейти на ASP.NET MVC?

Я только что слушал 17-й подкаст команды StackOverflow, и они так высоко отзывались о ASP.NET MVC, что я решил его проверить.

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

Есть ли действительно большие плюсы, которые сделают это стоящим?

Обновлено: это не существующий проект, это проект, который вот-вот начнется, поэтому, если я собираюсь это сделать, это должно быть сейчас ...


Я только что нашел это

It does not, however, use the existing post-back model for interactions back to the server. Instead, you'll route all end-user interactions to a Controller class instead - which helps ensure clean separation of concerns and testability (it also means no viewstate or page lifecycle with MVC based views).

Как это будет работать? Нет режима просмотра? Нет событий?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
52
0
9 643
20
Перейти к ответу Данный вопрос помечен как решенный

Ответы 20

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

Фактически, новая платформа ASP.NET MVC абстрагирует большую часть «паттернов» MVC от разработчика. Мои 0,02 доллара (хотя и нежелательные).

Boydski 25.03.2009 22:35

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

Что бы вы ни делали, обязательно задокументируйте это. Возможно, если вы используете демонстрационный проект, напишите вскрытие для использования в будущем.

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

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

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

Я не знаю ASP.NET MVC, но я хорошо знаком с шаблоном MVC. Я не вижу другого способа создавать профессиональные приложения без MVC. И это должна быть модель MVC 2, например Spring или Struts. Кстати, как вы, люди, создавали веб-приложения без MVC? Когда у вас возникает ситуация, когда какая-то проверка необходима для каждого запроса, например, проверка подлинности пользователя, каково ваше решение? Какое-то включение (validate.aspx) на каждую страницу?

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

С ASP.NET MVC вы теряете модель состояния просмотра / обратной передачи веб-форм ASP.NET. Без этой абстракции вы гораздо более тесно работаете с командами HTML и HTTP POST и GET. Я считаю, что программирование пользовательского интерфейса в некоторой степени соответствует классическому ASP.

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

Возможно, это лучшее - или худшее - из обоих миров.

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

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

David 26.04.2009 07:30

@ Хуан Мануэль Вы когда-нибудь работали в классическом ASP? Когда вам приходилось программировать все свои собственные события и элементы статистики (например, раскрывающееся меню, вызывающее выбранное значение после отправки формы)?

Если это так, то ASP.NET MVC сразу не почувствует себя неловко. Я бы посмотрел «Удивительную серию» Роба Конери «Витрина MVC», где он прошелся по фреймворку и построил каждый ожидаемый компонент для сайта-витрины. Это действительно впечатляет, и за ним легко следить (наверстать упущенное сложно, потому что Роб был очень активен и МНОГО опубликовал в этой серии).

Лично мне, в отличие от чувства по теме Джеффа Этвуда, мне больше понравилась модель веб-формы. Это, безусловно, полностью отличалось от дней vbscript / классического ASP, но на самом деле было приятно контролировать состояние просмотра и писать собственные элементы управления, удобные для CSS.

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

Не вызывает ли беспокойство тот факт, что ASP.net MVC присутствует только в Preview 5?

Я знаю, что StackOverflow был создан с его использованием, но есть ли шанс, что Microsoft сможет внести значительные изменения в структуру до того, как она официально выйдет из бета / альфа / предварительной версии?

I dont´t know ASP.NET MVC, but I am very familiar with MVC pattern. I don´t see another way to build professional applications without MVC. And it has to be MVC model 2, like Spring or Struts. By the way, how you people were building web applications without MVC? When you have a situation that some kind of validation is necessary on every request, as validating if user is authenticated, what is your solution? Some kind of include(validate.aspx) in every page?

Вы никогда не слышали о разработке N-Tier?

Я использовал ASP.NET MVC (я даже написал HTTPModule, который позволяет вам определять маршруты в web.config), и у меня все еще есть горечь во рту.

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

Это, и я не поддерживаю нынешнюю причуду "ИСПЫТАТЬ ВСЕ" ...

@Jonathan Holland Я видел, что за вас проголосовали против, но это ОЧЕНЬ ДЕЙСТВИТЕЛЬНЫЙ пункт. Я читал несколько сообщений о интертубах, где люди, кажется, путают ASP.NET MVC рамки и MVC шаблон.

MVC сам по себе является ОБРАЗЕЦ ДИЗАЙНА. Если все, что вам нужно, это «разделение проблем», то вы, безусловно, можете добиться этого с помощью веб-форм. Лично я большой поклонник Шаблон MVP в стандартной n-уровневой среде.

Если вам действительно нужен ПОЛНЫЙ контроль над вашей разметкой в ​​мире ASP.NET, тогда MVC - это то, что вам нужно.

Важно помнить, что MVC и WebForms не конкурируют, и один не лучше другого. Это просто разные инструменты. Большинство людей, кажется, подходят к MVC и WebForms как «один должен быть лучше, чем другой». Это не правильно. Один - молоток, другой - отвертка. Оба они используются в процессе объединения, но имеют разные сильные и слабые стороны.

Если у вас остался дурной вкус, вы, вероятно, пытались забить гвоздь отверткой. Определенные проблемы обременительны с WebForms, которые становятся элегантными и простыми с помощью MVC, и наоборот.

Прямо на Рекса. Это должен быть повторяющийся ответ.

David 26.04.2009 07:34

Я не вижу преимущества WebForms, которого нет у MVC. Что я могу делать с WebForms лучше, чем MVC?

gdoron is supporting Monica 27.01.2012 01:10

Быстрая разработка приложений

Sai Avinash 03.09.2013 18:54

ASP.NET MVC в основном позволяет разделить ответственность разных разделов кода. Это позволит вам протестировать ваше приложение. Вы можете тестировать свои просмотры, маршруты и т. д. Это также ускоряет работу приложения, поскольку теперь нет ViewState или Postback.

НО, есть и минусы. Поскольку вы не используете WebForms, вы не можете использовать какой-либо элемент управления ASP.NET. Это означает, что если вы хотите создать GridView, вы запустите цикл for и создадите таблицу вручную. Если вы хотите использовать мастер ASP.NET в MVC, вам придется создать его самостоятельно.

Это хороший фреймворк, если вы устали от веб-формы ASP.NET и хотите выполнять все самостоятельно. Но вы должны помнить, будет ли вам полезно создавать все заново или нет?

В целом я предпочитаю фреймворк Webforms из-за богатого набора элементов управления и автоматического подключения.

Ответ принят как подходящий

Если вы сегодня вполне довольны WebForms, то, возможно, ASP.NET MVC не для вас.

Я очень долго разочаровывался в WebForms. Я определенно не один здесь. Абстракция смарт-клиента с отслеживанием состояния в сети сильно ломается в сложных сценариях. Мне нравится HTML, Javascript и CSS. WebForms пытается скрыть это от меня. В нем также есть несколько действительно сложных решений проблем, которые на самом деле не такие уж и сложные. Webforms также сложно тестировать, и хотя вы можете использовать MVP, это не лучшее решение для веб-среды ... (по сравнению с MVC).

MVC понравится вам, если ... - вы хотите больше контролировать свой HTML - хотите беспрепятственного использования ajax, как и на любой другой платформе - хотят сквозной тестируемости - хотите значимые URL-адреса - НЕНАВИЖУ заниматься проблемами обратной передачи и состояния просмотра

А что касается фреймворка Preview 5, он довольно стабилен, дизайн в основном присутствует, и его обновление не составляет труда. Я запустил приложение на Preview 1 и обновил его в течение нескольких часов после того, как стала доступна новейшая предварительная версия.

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

Одна хорошая вещь, которую я заметил, просматривая множество сообщений в блогах и видеоуроков при разработке домашнего проекта MVC, заключается в том, что большинство из них следуют текущим передовым методам (TDD, IoC, Dependency Injection и, в меньшей степени, POCO), плюс много JQuery, чтобы сделать опыт более интересным для пользователя, и это то, что я могу применить в моих текущих приложениях веб-форм, и что я не был раскрыт в такой степени раньше.

Способ работы ASP.NET MVC настолько отличается от веб-форм, что он немного встряхнет ваш разум, и это очень хорошо для разработчика!

OTOH для новичков в веб-разработке. Я думаю, что MVC - определенно лучший старт, потому что он предлагает хороший шаблон дизайна из коробки и ближе к тому, как действительно работает Интернет (в конце концов, HTML не имеет состояния). В MVC вы выбираете каждый байт, который передается вперед и назад по сети (по крайней мере, пока вы не сходите с ума от помощников html). Как только парень получит это, он или она будет лучше подготовлен к переходу на «искусственные» возможности, предоставляемые веб-формами ASP.NET и серверными элементами управления.

Похоже, это именно то, что делал классический ASP: вы все сами кодируете, весь HTML, все манипуляции с DOM с помощью Javascript и т.д., без состояния просмотра, серверных элементов управления и т.д.

joedotnot 16.12.2009 08:47

Если вы твердо настроены использовать фреймворк MVC, я бы предпочел использовать проект Castle ...

При этом я лично думаю, что у WebControls есть много преимуществ, таких как, например, возможность создавать управляемые событиями приложения, которые имеют клиента с отслеживанием состояния и так далее. Большинство аргументов против WebControls построены из-за непонимания модели WebControl и т. д. А не потому, что они действительно плохи ...

MVC - это не серебряная пуля, особенно Microsoft MVC ...

Я предполагаю, что Джефф Этвуд, который создал этот самый сайт с использованием ASP.NET MVC, будет отличаться;) Пока люди не считают веб-формы и ASP.NET MVC взаимоисключающими навыками, но 2 хороших инструмента, которые каждый профессиональный ASP .NET dev должен быть в своих наборах инструментов, все в порядке. Чем больше инструментов, тем лучше!

rodbv 26.11.2008 00:42

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

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

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

Вряд ли он осознавал, что вся идея разделения View также решает часть обслуживания. Это перевешивает тестируемость в некоторых приложениях. Нам не нужно тестировать дизайн HTML, если мы используем инструмент WYSWYG. По этой причине веб-формы хороши.

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

Помните, что лучшими веб-страницами по-прежнему являются файлы .HTML, и в этом заключается сила ASP .NET MVC.

Ajax, RAD (веб-формы с ajax очень часто являются анти-RAD), ПОЛНОЕ УПРАВЛЕНИЕ (без разработки целой кучи кода и циклов). веб-формы хороши только для привязки какой-то сетки и тому подобного, а не для чего-либо еще, и еще одна действительно важная вещь - производительность. когда вы застрянете в аду веб-форм, вы рано или поздно включите MVC.

Другие вопросы по теме