MVC - это модель для просмотра или контроллера для просмотра?

Я вижу многочисленные сайты и статьи, объясняющие, что представление обновляется из модели, как пример ниже mvc однако я вижу несколько других примеров архитектуры MVC, показывающих, что представление обновляется через контроллер enter image description here

Это зависит от того, есть ли в вашем представлении @Model? им просто интересно, почему в разных версиях MVC нас учили, что это должно быть второе изображение.

Ответы

Ответ 1

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

Насколько мне известно, все началось с Classic (Original) MVC, который отделяет веб-приложение от трех частей, например Model, View и Controller. Цели заключались в следующем:

  • Достижение разрыва связи между моделью и представлением (шаблон наблюдателя для его достижения).
  • Инкапсулировать бизнес-логику в модель, чтобы она могла быть исчерпывающей тестирование.
  • Сделайте вид как тупой/тонкий, чтобы уменьшить необходимость его проверки.

A Standard MVC Interaction

Рисунок очаровал так много, что было несколько вариантов (Активная модель, Пассивная модель, Модель 2). Эти вариации были связаны с реализацией шаблона в конкретных рамках в соответствии с целями дизайна каркаса.

Например, одним из вариантов является Model2. Model2 - это веб-вариация (классический MVC был фактически предназначен для настольного приложения) и получил популярность как "ASP.NET MVC Framework".

The Model2 Interaction as in the ASP.NET MVC Framework

Ключевое различие между классическим MVC и ASP.NET MVC Framework заключается в том, что позднее обеспечивается четкое разделение между моделью и представлением, т.е. нет прямого взаимодействия. Скорее Контроллер отвечает за облегчение этой связи между Model и View в ASP.NET MVC Framework. Это делает веб-приложения ASP.NET MVC Framework намного проще и эффективнее для тестирования.

Кроме того, в Model2 существует некий свободный контракт, который может быть установлен между представлением и контроллером. В ASP.NET MVC Framework этот контракт использовался для представления контейнером ViewData и в настоящее время с использованием объекта ViewModel.

Чтобы избежать путаницы, нужно взглянуть на взаимодействие между этими тремя частями (Model, View и Controller) в реализациях шаблонов MVC, которые в настоящее время используются. Также рассмотрим тот факт, что это конкретная реализация шаблона MVC, и одна диаграмма не может полностью описать ее.