Чем ASP.Net MVC отличается от Classic ASP (не ASP.Net - оригинальный ASP) - PullRequest
5 голосов
/ 13 марта 2010

Я пытаюсь получить общее представление о ASP.Net MVC, и мне пришло в голову, что он очень похож на оригинальный ASP-скрипт. В свое время мы организовывали наш код «модель» / бизнес-логики в классы VBScript или в компоненты VB COM.

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

Ответы [ 4 ]

12 голосов
/ 13 марта 2010

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

URL-сопоставление

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

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

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

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

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

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

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

Сильный набор текста и компиляция

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

if (MyArray.Length > 0)

вместо

if (MyArray.Length)

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

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

2 голосов
/ 13 марта 2010

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

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

0 голосов
/ 30 октября 2010

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

ASP Classic не достигает тех же результатов, достигнутых аспером нетто мвк.

Если мы опускаем очевидные различия между скриптом c # vb, я бы сказал, что разница главное, что вы можете лучше организовать свой код.

Как и в классическом ASP очень легко сделать "спагетти-код", а с asp MVC, напротив, очень легко поддерживать порядок и отделять код бизнес логика с дисплея.

Не только это.

Asp Net Mvc легко интегрируется с такими технологиями, как EntityFramework разрешить дальнейшую разбивку и организацию кода.

0 голосов
/ 13 марта 2010

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

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