Как делает ASP.NET, MVC отличаются от Классика ASP (не ASP.NET - исходный ASP)

Я пытаюсь получить высокоуровневое понимание ASP.NET MVC, и это начало происходить со мной, что это много походит на исходный сценарий ASP. Назад в день, мы организовывали нашу "модель" / код бизнес-логики в классы VBScript, или в COM-компоненты VB.

Конечно, теперь мы имеем дополнительную власть c# и классов платформы .NET. Помимо высокого уровня oo и других возможностей в c# и .NET, каковы другие существенные различия между исходным ASP и ASP.NET MVC?

5
задан alchemical 13 March 2010 в 00:11
поделиться

3 ответа

Есть три основных отличия: сопоставление URL-адресов, разделение логики от представления и строгая типизация.

Отображение URL-адресов

В классическом ASP существует плавный переход от написания HTML-страниц к написанию HTML-страниц с динамическим содержимым. Как и в случае со статическими HTML-файлами, каждый URL-адрес имеет прямое сопоставление с файлом в файловой системе. То же самое более или менее верно в отношении ASP.NET, чего бы он ни стоил.

В ASP.NET MVC каждое «семейство» URL-адресов сопоставляется с объектом контроллера (по умолчанию хранящимся в каталоге / Controllers), где каждый член семейства вызывает метод при доступе. В конце каждого метода (обычно) вы указываете ему визуализировать конкретное представление (хранящееся в папке, названной в честь контроллера в каталоге / Views), что очень похоже на классическую страницу ASP со всей логикой, отделенной .

Это дает вам логические и оптимизированные для SEO URL-адреса и группирует связанные функции вместе.

Отделение логики от представления

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

В ASP.NET MVC ваша бизнес-логика (например,проверка) выполняется на уровне модели (вы можете выбрать один из нескольких десятков, но популярными вариантами являются LINQ-to-SQL и LINQ-to-Entity-Framework), ваша логика человеческого интерфейса входит в контроллер (например, заполнение State / Меню провинции, основанное на выборе страны), и ваша презентация (фактический HTML-код, который вы можете передать дизайнеру для редактирования) появится в представлении.

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

Строгая типизация и компиляция

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

if (MyArray.Length > 0)

, а не

if (MyArray.Length)

Но ИМХО, это небольшая цена за скорость и проверку работоспособности, которые вы получаете от строгой типизации.

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

12
ответ дан 18 December 2019 в 13:13
поделиться

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

Кроме того, что очень важно, MVC поддерживает механизмы просмотра. Вы можете писать необработанный HTML с помощниками в нем, но вы также можете использовать механизмы просмотра, такие как Web Forms, Spark, NHaml и т. Д., Которые позволяют писать более сжатый код просмотра, создавать повторно используемые компоненты (например, элементы управления Web Forms) и т. Д. было невозможно в ASP Classic.

2
ответ дан 18 December 2019 в 13:13
поделиться

Классический ASP использовал VBScript, в котором нет классов. Это совсем не объектно-ориентированный подход.

0
ответ дан 18 December 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: