Должен ли я перейти на ASP.NET MVC?

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

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

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

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


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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Это, и я не поддерживаю текущую причуду "TEST EVERYTHING"...

Ответ 4

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

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

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

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

Ответ 5

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

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

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

Ответ 6

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

Если это так, то ASP.NET MVC не будет чувствовать себя неудобно с места в карьер. Я бы просмотрел Rob Conery Awesome Series " MVC Storefront, где он проходил через фреймворк и строил каждый ожидаемый компонент для сайта магазина. Это действительно впечатляет и легко следовать (догонять сложно, потому что Роб был активным и опубликовал LOT в этой серии).

Лично, и совершенно против Jeff Atwood чувства по теме, мне скорее понравилась модель webform. Это было совершенно иначе, чем vbscript/классические ASP-дни, но, несмотря на то, что проверка состояния просмотра и запись собственных CSS-элементов управления были приятными, на самом деле.

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

Ответ 7

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

MVC сам по себе является DESIGN PATTERN. Если все, что вы ищете, это "разделение проблем", то вы, безусловно, можете добиться этого с помощью веб-форм. Лично я большой поклонник

Ответ 8

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

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

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

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

Ответ 9

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

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

Ответ 10

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

Ответ 11

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

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

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

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

Ответ 13

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

Вы никогда не слышали о развитии N-уровня?

Ответ 14

Ajax, RAD (webforms с ajax очень часто анти-RAD), ПОЛНЫЙ КОНТРОЛЬ (без разработки целого ряда кода и циклов). webforms хороши только для привязки некоторой сетки и т.д., а не для чего-либо еще, а еще одна действительно важная вещь - производительность. когда вы застряли в веб-формах, ад u включит MVC раньше или позже.

Ответ 15

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

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

Ответ 16

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

Ответ 17

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

Ответ 18

Является ли тот факт, что ASP.net MVC только в "Preview 5" может вызывать беспокойство при просмотре?

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

Ответ 19

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

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

MVC не является Silver Bullet, особенно не Microsoft MVC...

Ответ 20

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

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

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

Помните, что лучшие веб-страницы по-прежнему являются .HTML, и что здесь есть Power of ASP.NET MVC.