ViewModel является термином, который используется и в MVVM (Model-View-ViewModel) и в рекомендуемой реализации для ASP.NET MVC. Исследование "ViewModel" может путать, учитывая, что каждый шаблон использует тот же термин.
Каковы основные отличия между MVC ViewModel и MVVM ViewModel? Например, я полагаю, что MVVM ViewModel более богат, учитывая отсутствие Контроллера. Действительно ли это верно?
Довольно сложный вопрос, чтобы дать краткий ответ, но я попробую. (Имейте в виду, что ответы на подобные вопросы все еще являются предметом споров среди разработчиков.)
В MVC ViewModel предоставляет всю информацию, необходимую для визуализации View. Содержащиеся в нем данные создаются с использованием данных, определенных в Модели. View читает ViewModel и отображает результат. Входные данные из представления передаются контроллеру, который манипулирует моделью, создает соответствующую модель представления и передает ее представлению для визуализации.
В MVVM модель представления выполняет ту же функцию, что и в MVC, но также заменяет часть контроллера MVC, предоставляя команды, которые позволяют представлению управлять моделью.
Прошло много времени с тех пор, как я играл в UI Design Patterns Bingo ... но позвольте мне попробовать это ...
MVVM - это просто то, что придумала MS ... потому что это помогает вам максимально эффективно использовать WPF. Вы объединяете состояние и поведение представления в класс (модель представления), который легко тестируется + затем вы используете привязку данных для получения данных в любом представлении.
Эта ссылка содержит краткое описание эволюции MVVM. Объедините это с серией Фаулера « Архитектуры графического интерфейса », и вы уже в пути.
Обновление: не знал, что существует что-то под названием MVC-VM . По всей видимости, детище коллектива ASP.NET MVC. Внешний вид и звук похож на MVVM (за исключением настройки для ASP.NET MVC); единственное отличие состоит в том, что он накладывает ограничение на 1: 1 отображение между ВМ и представлением. Я бы угадал 1: N, но все остальное совпадает.