Вопрос

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

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

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

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


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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

И я не одобряю нынешнюю моду «ТЕСТИТЬ ВСЕ»…

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

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

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

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

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

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

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

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

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

Если вы действительно хотите ПОЛНЫЙ контроль над своей разметкой в ​​мире ASP.NET, то платформа MVC для вас.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Является ли тот факт, что ASP.net MVC доступен только в «Предварительной версии 5», поводом для беспокойства при изучении этого вопроса?

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top