Должен ли я перейти на ASP.NET MVC? - PullRequest
52 голосов
/ 27 августа 2008

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

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

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

РЕДАКТИРОВАТЬ: Это не существующий проект, это проект, который собирается начать, поэтому, если я собираюсь сделать это, это должно быть сейчас ...


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

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

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

Ответы [ 20 ]

65 голосов
/ 10 сентября 2008

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

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

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

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

31 голосов
/ 27 августа 2008

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

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

12 голосов
/ 27 августа 2008

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

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

Это, и я не поддерживаю текущую причуду "ТЕСТ ВСЕ" ...

11 голосов
/ 10 сентября 2008

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

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

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

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

9 голосов
/ 27 августа 2008

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

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

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

6 голосов
/ 27 августа 2008

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

Если это так, то ASP.NET MVC не будет чувствовать себя неловко. Я бы ознакомился с потрясающей серией Роба Конери " MVC Storefront ", в которой он шел по фреймворку и создавал каждый ожидаемый компонент для сайта витрины. Это действительно впечатляет и за ним легко следовать (догонять сложно, потому что Роб действительно активен и опубликовал много в этой серии).

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

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

6 голосов
/ 27 августа 2008

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

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

Если вы действительно хотите ВСЕГО контролировать свою наценку в мире ASP.NET, тогда MVC вам подойдет.

5 голосов
/ 25 ноября 2008

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

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

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

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

5 голосов
/ 17 февраля 2009

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

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

4 голосов
/ 27 августа 2008

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

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

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

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

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