ASP.NET MVC = Классический ASP с библиотекой классов .NET. В самом деле? - PullRequest
12 голосов
/ 17 февраля 2009

Этот блог и один из наших старших разработчиков считают, что веб-разработка прошла полный цикл с ASP.net MVC. На самом деле это не вопрос скрипта VB против VB9 / 10 или чего-то нового. Помимо движка маршрутизации, вспомогательных классов и методов. Какие веские аргументы вы можете привести, чтобы сказать

ASP.net MVC! = Классический ASP + .net BCL

Ответы [ 7 ]

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

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

Это отделение обработки запроса от обработки ответа очень отличается от ASP.

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

Этот аргумент работает в предположении, что все, что есть в MVC - это Views.

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

Что касается самого поста в блоге, да, вы теряете много функциональности, отказываясь от богатых элементов управления, особенно если вы говорите о элементах управления, купленных у стороннего поставщика. Тем не менее, в настоящее время существуют полные наборы javascript-виджетов, которые так же хороши, если не лучше, чем все доступные для asp, и они бесплатны. Не только это, но и использование ASP.net означает покупку в чрезвычайно сложную среду, которая работает примерно в 90% случаев. Проблема с этим в том, что 90% никогда не бывает достаточно для чего-то нетривиального, и работа вокруг структуры для этих дополнительных 10% может быть адом. Другое дело, что производительность, возникающая при покупке в этой сложности, абсолютно ужасна.

Сравнение между MVC и ASP.net должно быть между виджетами и хорошей архитектурой, гибкой прямой разметкой и хорошей производительностью. Если вам нужны эти виджеты, тогда используйте ASP.net, Господь знает, что это не исчезнет в ближайшее время. Если вы знакомы с веб-технологиями, такими как html, javascript и CSS, потерять их из виджетов из коробки будет плохо, но то, что вы получите, значительно перевесит то, что вы потеряли.

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

Сообщение в блоге не основано на очень полном понимании структуры MVC. MVC способствует хорошему разделению задач, код, который содержится в файлах View, должен быть очень простым; Все фактическое кодирование происходит внутри контроллеров. Автор поста в блоге говорит, что истинной силой ASP.Net были элементы управления, я бы сказал, что сильной стороной была модель, управляемая событиями, и представление среды с состоянием поверх почти среды без состояния. MVC поддерживает эту силу, а также способствует еще большему отделению от реального пользовательского интерфейса.

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

Кроме того, по моему мнению, было бы сложнее поддерживать приложение, если у вас есть классический ASP-подобный код, плавающий в HTML страницы.

Я могу согласиться с тем, что поддерживать страницу со спагетти-кодом может быть сложнее.

Но представления ASP.NET MVC по-прежнему компилируются так же, как веб-формы ASP.NET - это большая разница по сравнению с ASP 3, и у вас есть IntelliSense, доступный в .aspx.

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

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

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

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

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

1 голос
/ 19 февраля 2009

Я являюсь автором этого поста в блоге, и вот мои взгляды на него:

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

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

Программное обеспечение - это компромиссы. Вы торгуете мощными средствами управления ASP.NET, управлением ViewState, Postbacks и т. Д. С полным контролем над циклом запроса / ответа. Если вас устраивают проблемы ViewState, Postback и вы не заинтересованы в модульном тестировании, тогда, возможно, ASP.NET MVC не для вас.

Также в процессе разработки IronRuby я вижу ASP.NET MVC как очень мощный фреймворк.

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

Компонент View нового синтаксиса поддержки ASP.NET MVC, который выглядит как ASP 3.0.

Фактически, этот синтаксис (<%%>) всегда был доступен в ASP.NET WebForms.

Вы все еще можете использовать элементы управления ASP.NET () в MVC, или вы можете использовать новый синтаксис (что странно, IMHO) или использовать другие платформы, такие как NVelocity.

Этот диапазон доступных методов нельзя рассматривать как старый ASP поверх .NET BCL.

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