Код позади / рядом с моделью (.cs-aspx.cs-aspx) VS модель MVC, в чем разница на самом деле? - PullRequest
3 голосов
/ 25 декабря 2008

Каковы основные различия между классической моделью .cs-aspx.cs-aspx (код позади / рядом) и новой моделью MVC?

Ответы [ 3 ]

5 голосов
/ 25 декабря 2008

Основное различие между MVC и классическим ASP состоит в том, что в классическом ASP весь код и разметка для приложения существуют в файле .asp. В MVC файл .aspx содержит только код и разметку для отрисовки страницы. Остальная часть приложения для обработки запросов, извлечения данных модели и применения бизнес-логики существует в классах контроллера и модели. Эти классы гораздо проще тестировать, чем код класса ASP, поскольку они отделены от кода, отвечающего за визуализацию представления.

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

Webforms (codebehind) находится где-то между классическим ASP и шаблоном MVC. Webforms не обеспечивает разделение интересов, как это делает MVC, но позволяет большему количеству кода существовать «за» реальной страницей. Например, вы можете отделить бизнес-объекты, бизнес-логику и среду хранения (модель, если хотите) от кода, который отвечает за генерацию представления. Сложность состоит в том, что действия контроллера (обработка ввода и извлечение модели) все еще связаны с кодом визуализации представления. Эта интеграция значительно усложняет тестирование этого кода и делает код представления / контроллера гораздо более зависимым друг от друга, чем необходимо - проблемы "смешаны", а не "разделены". В целом, это свидетельствует о плохом дизайне, поскольку в будущем ему будет труднее вносить необходимые изменения.

Надеюсь, это поможет.

1 голос
/ 09 апреля 2010

Проще говоря: MVC - это способ создания веб-приложений. Код позади (веб-формы asp.net) не является хорошей практикой. Если вы действительно разработчик, вы поймете, что MVC - лучшая практика, поскольку она действительно отделяет логику от данных и представления. Просто MVC - элегантный и правильный путь.

0 голосов
/ 25 декабря 2008

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

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

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

...