Ответ 1
MVC - это свободно определенный шаблон, который дает архитектору большую свободу действий над деталями реализации. Вероятно, поэтому существует так много вариаций MVC.
Насколько мне известно, все началось с Classic (Original) MVC, который отделяет веб-приложение от трех частей, например Model, View и Controller. Цели заключались в следующем:
- Достижение разрыва связи между моделью и представлением (шаблон наблюдателя для его достижения).
- Инкапсулировать бизнес-логику в модель, чтобы она могла быть исчерпывающей тестирование.
- Сделайте вид как тупой/тонкий, чтобы уменьшить необходимость его проверки.
Рисунок очаровал так много, что было несколько вариантов (Активная модель, Пассивная модель, Модель 2). Эти вариации были связаны с реализацией шаблона в конкретных рамках в соответствии с целями дизайна каркаса.
Например, одним из вариантов является Model2. Model2 - это веб-вариация (классический MVC был фактически предназначен для настольного приложения) и получил популярность как "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, и одна диаграмма не может полностью описать ее.