Подтвердить что ты не робот

ASP.NET MVC напоминает мне старый классический ASP-спагетти код

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

По Блог Скотта Гатри:

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

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

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

Ответ 3

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

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

ASP.NET MVC - это новый HOPE для более организованного HTML-кода и мощной бизнес-логики.

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

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

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

Ответ 7

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

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

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

Технология заслуживает этого, но пока еще не созрела.

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

Ответ 8

Это было упомянуто в PDC, они упоминали, что это было слишком "классическим asp", как со всеми <% =. Но они также упоминали, что будут добавлять стандартные теги и элементы управления ASP.Net.

Все направление для них - получить стабильную версию, а затем упростить работу с ней.

Видео PDC: http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/PC21.wmv

Ответ 9

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

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

Ответ 10

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

Ответ 11

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

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

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

Ответ 12

Потому что людям, стоящим за MVC, действительно понравились страницы ASP/JSP, и они хотят реализовать его снова и снова. Они, кажется, ненавидят:

  • ViewState
  • Существующие элементы управления ASP.Net
  • Очистить Html
  • Существующие пользовательские элементы управления
  • Обратная передача

Они, кажется, любят:

  • Повторное изобретательство колеса
  • REST-ful urls

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

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

И прежде чем кто-нибудь отметит меня в -1, посмотрите, сколько вопросов MVC я ответил. Я знаю, о чем говорю.

UPDATE Если вы серьезно относитесь к своему разделению, то, глядя на него, chaiguy1337 - это хорошо. String Template выглядит великолепно, потому что он не позволяет использовать какой-либо код в вашем интерфейсе! На мой взгляд, команда ASP.net MVC сбросила мяч на MVC.

Ответ 13

В классическом ASP у вас не было выбора для перемещения бизнес-логики из уровня пользовательского интерфейса. В ASP.Net MVC код "спагетти" изолирован слоем пользовательского интерфейса, View; 90% вашей логики будет находиться в слоях "M" и "C", которые являются регулярными, не спагеттиными классами С#.

Представление должно быть "глупым". Ничего критического в этом нет с точки зрения бизнес-логики. Он должен быть почти одноразовым.

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

Ответ 14

Для записи:

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

Общие веб-сайты полагаются на full-form-post/get и в AJAX, если вы используете оба, то вы превращаете "C" из MVC в беспорядок.

В конечном счете, большинство программистов заканчивают "обманывать", помещая вызов ajax в слой VIEW.