Ответ 1
В ASP "Вид" получает запрос. В ASP.NET-MVC контроллер получает запрос, впоследствии он может выбирать из нескольких разных представлений для создания ответа.
Это разделение обработки запроса от обработки ответа очень отличается от ASP.
Этот blogpost и один из наших старших разработчиков на работе считают, что веб-разработка имеет полный круг с ASP.net MVC. Это не вопрос о VB script vs VB9/10, или что-то другое. Помимо механизма маршрутизации, вспомогательных классов и методов. Каковы некоторые веские аргументы, которые вы можете сказать:
ASP.net MVC!= Классический ASP +.net BCL
В ASP "Вид" получает запрос. В ASP.NET-MVC контроллер получает запрос, впоследствии он может выбирать из нескольких разных представлений для создания ответа.
Это разделение обработки запроса от обработки ответа очень отличается от ASP.
Этот аргумент работает в предположении, что все, что есть в MVC, это Views.
Реальность такова, что представление - это одна маленькая часть головоломки, и, думая, что это все, проявляется глубокое отсутствие понимания как шаблона, так и структуры. Вы не можете сделать аргумент без предварительного обучения человека, и в процессе обучения аргумент станет нерелигиозным.
Чтобы самостоятельно отреагировать на сообщение в блоге, да, вы теряете много функциональности, отказываясь от расширенных элементов управления, особенно если вы говорите об элементах управления, приобретенных у стороннего поставщика. Тем не менее, в настоящее время есть полный набор виджетов javascript, которые хороши, если не лучше, чем все, что доступно для asp, и они бесплатны. Не только это, но использование ASP.net означает покупку в чрезвычайно сложную структуру, которая работает примерно в 90% случаев. Проблема в том, что 90% никогда не бывает достаточным для чего-то нетривиального, и работа над каркасом для этих дополнительных 10% может быть живым адом. Другое дело, что производительность, которая приходит с покупкой в эту сложность, абсолютно ужасна.
Сравнение MVC и ASP.net должно быть между виджетами и хорошей архетектурой, гибкой прямой разметкой и хорошей производительностью. Если вам нужны эти виджеты, то придерживайтесь ASP.net, Господь знает, что он не уйдет в ближайшее время. Если вам нравится веб-технологии, такие как html, javascript и CSS, потерять те из виджетов будут сосать, но то, что вы получите, значительно перевешивает то, что вы теряете.
Сообщение в блоге не основано на очень полном понимании структуры MVC. MVC способствует хорошему разделению проблем, код, который содержится в файлах View, должен быть очень простым; Все фактическое кодирование происходит внутри контроллеров. Автор сообщения в блоге говорит, что истинная сила ASP.Net - это элементы управления, я бы сказал, что сила была моделью, управляемой событиями, и презентация среды с сохранением состояния превосходит почти безгосударственную среду. MVC поддерживает эту силу, а также способствует еще большему отрыву от фактического пользовательского интерфейса.
Существуют значительные фундаментальные различия в дизайне между классическим ASP и ASP.NET MVC. Наиболее существенным отличием является разделение бизнес-логики с логикой отображения. В классическом ASP оба типа логики, по большей части, смешивались в разметке. В ASP.NET MVC - используется правильно - единственный код в компоненте представления - это тот, который требуется для отображения страницы. Бизнес-логика, выбор данных для отображения на странице и логика интерпретации и обработки входов находятся в контроллерах и модели.
Из-за этой разницы ASP.NET MVC значительно повышает тестируемость кода как по классическим ASP, так и по WebForms. Вся бизнес-логика находится в классах, которые отделяются от механизма рендеринга и могут быть (более) легко протестированы с помощью модульных тестов. В классических ASP и WebForms, в той или иной степени, большая часть этой логики находится на странице или в коде, что сложнее проверить.
Плюс, на мой взгляд, было бы сложнее поддерживать приложение, как только у вас будет классический ASP-код, плавающий в HTML-странице.
Я могу согласиться, что сохранение страницы с кодом спагетти может быть сложнее.
Но ASP.NET MVC Views все еще скомпилированы, как ASP.NET WebForms - это большая разница над ASP 3, и у вас есть IntelliSense, доступный в .aspx.
Общее обслуживание приложений с помощью MVC на самом деле намного проще. Гораздо проще создать модульные тесты для вашего кода, которые могут создать хорошую сеть для обнаружения ошибок (а также уверенность разработчиков в том, что код действительно работает).
Очень легко создать страницу в Web Forms, но много раз сложнее проверить код за страницей.
Я являюсь автором этого блога, и вот мои взгляды на него:
ASP.NET MVC - это другая структура, предназначенная для разных аудиторий и целей. Основной целью ASP.NET MVC является разделение проблем и тестируемости. Код вида и код HTML-кода создают код спагетти, но вы всегда должны сохранять свои представления в виде небольших компонентов. Это облегчит отладку приложения и поиск проблем, а не сохранение всех просмотров на одной странице и создание беспорядка.
ASP.NET MVC пришлось отказаться от множества мощных элементов управления ASP.NET. Но, к счастью, многие библиотеки JavaScript вышли с новыми классными элементами управления, которые будут подключены к ASP.NET MVC.
Программное обеспечение предназначено только для компромиссов. Вы торгуете мощными элементами управления ASP.NET, управлением ViewState, Postbacks и т.д. С полным контролем цикла запроса/ответа. Если вам нравится ViewState, проблемы с обратной связью и не заинтересованы в тестировании модулей, возможно, ASP.NET MVC не для вас.
Кроме того, с разработкой IronRuby я вижу ASP.NET MVC как очень мощную структуру.
Компонент View нового синтаксиса поддержки ASP.NET MVC, который выглядит как ASP 3.0.
Фактически, этот синтаксис (<%% > ) всегда был доступен в ASP.NET WebForms.
Вы все еще можете использовать элементы управления ASP.NET(< asp: control > ) в MVC или можете использовать новый синтаксис (который является нечетным IMHO) или использовать другие фреймворки, такие как NVelocity.
Этот диапазон доступных методов не может рассматриваться как старый ASP поверх .NET BCL.