Відповіді:
Контролер і ViewModel різняться по-різному.
У MVC контролер знає вид, він може змінити Вид. Він також знає Модель і може її назвати. У MVVM ViewModel - це абстрактне зображення представлення і не знає конкретного інтерфейсу, він обмотає модель таким чином, щоб її можна було відображати за бажанням.
У класичному MVC контролер - це лише стратегія Погляду на взаємодію з Модель. Насправді іноді контролер навіть не потрібен. У MVVM він вам не потрібен, оскільки у вас можуть бути різні ViewModels для одного і того ж представлення, якщо вам потрібна інша поведінка. У MVC ви можете мати, наприклад, ReadOnlyController або AdminController для спілкування з Модель. У MVVM ви можете просто мати два ViewModels, і ви виберете потрібний для перегляду.
Але вони мають певну схожість. В обох моделях Погляд є спостерігачем . У класичних MVC погляд є спостерігачем моделі, у MVVM - спостерігачем ViewModel.
Обидві моделі мають на меті забезпечити розділення проблем. MVVM насамперед спрямований на те, щоб забезпечити абстрагування погляду, повністю незалежного від використовуваної технології інтерфейсу. MVC не йде так далеко. Основна увага приділяється роз'єднанню проблем, щоб не ставити бізнес-логіку (Модель) на вигляд.
Ви можете також знайти цю відповідь моєї на подібне питання корисною.
Нарешті, я повинен сказати, що обидва зразки належать одній родині. MVP, з якого MVVM є нащадком, є братом MVC. Якщо ви хочете дізнатися більше, перейдіть за цим посиланням на веб-сайт Мартіна Фаулера , він пояснює все детально.