ASP.NET MVC напоминает мне старый классический код спагетти ASP - PullRequest
26 голосов
/ 19 декабря 2008

Я только что прошел некоторые уроки по MVC после того, как проверил этот сайт некоторое время. Это только я, или страницы MVC View возвращают УЖАСНЫЕ воспоминания классического кода спагетти ASP со всеми скачками в HTML и ASP.NET с желтыми разделителями, делающими невозможным чтение? Что случилось с важностью разделения кода и дизайна? Я действительно был продан за новую технологию, пока учебники не попали в раздел «Разработка страницы просмотра».

Или я что-то упустил? (И не говорите, что вы можете использовать шаблон, чтобы помочь, потому что он просто перемещает спагетти в другое место - подметает его под ковриком - это не решает проблему)

Ответы [ 14 ]

24 голосов
/ 19 декабря 2008

см. Сообщение Джеффа (http://www.codinghorror.com/blog/archives/001155.html), которое повторяет ваш вопрос, и ответ Роба Конери (http://blog.wekeroad.com/blog/asp-net-mvc-avoiding-tag-soup/)

)

Таким образом, ASP.NET MVC предоставляет разработчикам возможность самим стрелять в ноги, хотя, безусловно, это можно сделать чисто. Как таковой, он подходит для разработчиков, которые знакомы с веб-разработкой и имеют чистый стиль, но не для разработчиков, которые хотят, чтобы Widgetized поведение а-ля winforms без необходимости углубляться в разметку.

8 голосов
/ 13 марта 2009

Finlay Microsoft исправляет свою ошибку с ASP-Classic на ASP.NET шаг. 70% старых программистов asp пошли на PHP, потому что ASP.NET был сложным.

Они твердые, что все можно решить с помощью лекарств ASP.NET и выпадающих меню. И в конце концов все внутри формы тега! Мы создаем большие "веб-формы", а не веб-сайты. Просто посмотрите на HTML с любого сайта ASP.NET. Абсолютно ужасно!

ASP.NET MVC - это новая НАДЕЖДА для более чистого и организованного HTML-кода и мощной бизнес-логики.

8 голосов
/ 19 декабря 2008

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

Согласно блогу Скотта Гатри :

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

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

Примерами альтернативных механизмов просмотра являются NHaml , обсуждаемые здесь , Spark , обсуждаемые здесь и NVelocity , обсуждаемые здесь .

6 голосов
/ 19 декабря 2008

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

Classic ASP - механическая коробка передач только со второй передачей.

4 голосов
/ 19 декабря 2008

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

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

РЕДАКТИРОВАТЬ : Я забыл упомянуть о возможности создания методов расширения HtmlHelper, которые также позволяют перемещать многие вещи в бэкэнд. В целом, между контроллерами, моделями и методами расширения он добавляет гораздо больше кода, который легко тестируется в MVC, чем в классическом ASP или ASP.NET WebForms.

3 голосов
/ 27 октября 2009

После программирования на некоторое время MVC я возвращаюсь к ASP.NET.

MVC действительно хороший шаг вперед по сравнению с классическим ASP или PHP, но это большой шаг назад по сравнению с ASP.NET.

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

Технология имеет свои достоинства, но еще не достигла зрелости.

Возможно в версии 3.0 ...

3 голосов
/ 20 декабря 2008

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

Для сравнения, взгляните на шаблонизатор Django . В среде Django контроллеры и модели пишутся с использованием полноценного языка Python, но механизм шаблонов представления определяет ограниченный язык , который предоставляет только базовые программные конструкции (условные, циклы и т. Д.). Этот ограниченный язык напоминает Python, но на самом деле это не Python, поэтому он не может вызывать произвольный код, такой как внешние библиотеки. Он может получить доступ только к данным модели, переданным в представление.

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

1 голос
/ 09 февраля 2011

Меня всегда удивляет отсутствие понимания дизайна n-слоя / уровня, продемонстрированное некоторыми из самых громких сторонников asp.net mvc. SOC всегда была достижима в веб-формах. Шаблоны пользовательского интерфейса, такие как MVP, всегда были достижимы в веб-формах. Не вина платформ, что многие разработчики не знают, как проектировать.

Возвращаясь к вопросу о спагетти, я должен согласиться. Представление не является «глупым», как должно быть, если оно содержит условную логику или тонны фрагментов непроверенного кода.

Лично я предпочитаю шаблон MVP, а не MVC.

1 голос
/ 04 апреля 2009

Посмотрите на StringTemplate , он выглядит красиво и чисто.

1 голос
/ 19 декабря 2008

Речь идет о разделении проблем. В классическом ASP это была смесь бизнес-логики и логики представления, с добавлением неприятных включений для библиотек.

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

...