MVVM ViewModel по сравнению с MVC ViewModel

ViewModel является термином, который используется и в MVVM (Model-View-ViewModel) и в рекомендуемой реализации для ASP.NET MVC. Исследование "ViewModel" может путать, учитывая, что каждый шаблон использует тот же термин.

Каковы основные отличия между MVC ViewModel и MVVM ViewModel? Например, я полагаю, что MVVM ViewModel более богат, учитывая отсутствие Контроллера. Действительно ли это верно?

35
задан Neil Barnwell 21 December 2009 в 10:42
поделиться

2 ответа

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

В MVC ViewModel предоставляет всю информацию, необходимую для визуализации View. Содержащиеся в нем данные создаются с использованием данных, определенных в Модели. View читает ViewModel и отображает результат. Входные данные из представления передаются контроллеру, который манипулирует моделью, создает соответствующую модель представления и передает ее представлению для визуализации.

В MVVM модель представления выполняет ту же функцию, что и в MVC, но также заменяет часть контроллера MVC, предоставляя команды, которые позволяют представлению управлять моделью.

48
ответ дан 27 November 2019 в 07:08
поделиться

Прошло много времени с тех пор, как я играл в UI Design Patterns Bingo ... но позвольте мне попробовать это ...

MVVM - это просто то, что придумала MS ... потому что это помогает вам максимально эффективно использовать WPF. Вы объединяете состояние и поведение представления в класс (модель представления), который легко тестируется + затем вы используете привязку данных для получения данных в любом представлении.

Эта ссылка содержит краткое описание эволюции MVVM. Объедините это с серией Фаулера « Архитектуры графического интерфейса », и вы уже в пути.

Обновление: не знал, что существует что-то под названием MVC-VM . По всей видимости, детище коллектива ASP.NET MVC. Внешний вид и звук похож на MVVM (за исключением настройки для ASP.NET MVC); единственное отличие состоит в том, что он накладывает ограничение на 1: 1 отображение между ВМ и представлением. Я бы угадал 1: N, но все остальное совпадает.

8
ответ дан 27 November 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: