Чи є легка покрокова посилання на MVVM?
Так, є. Погляньте тут.
MVVM - це супернабір чи підмножина MVC?
MVVM належить до родини MVC, тому, якщо ви можете сказати, що це взагалі, це підмножина. Це варіант від'єднати інтерфейс користувача від бізнес-логіки під ним. Я б описав це як рідний брат MVC. З перших днів роботи ООП люди шукають способи від'єднати інтерфейс користувача від своєї логіки. MVC був першим архетипом, який розвивався. Це досить просто, хоча більшість людей не розуміють це правильно. Погляд є лише спостерігачем за моделлю і викликає її при необхідності. Контролер - це лише стратегія для представлення зв'язку з моделлю, наприклад, коли вам потрібна обмінна поведінка (наприклад, ReadonlyController, AdminController). MVC дуже успішний, і це дійсно хороша практика застосовувати його.
MVVM - це спеціалізований вид MVP Pattern, як описав Мартін Фаулер . MVP намагається зберегти вигляд якомога тупішим (при цьому все ще беручи інформацію користувача тощо), тим самим підвищуючи доказовість. Він спрямований на абстрагування погляду та логіки взаємодії, яку слід викласти у ведучого. Ведучий виключно спілкується з моделлю / бізнес-логікою та оновлює представлення даних. Мартін Фаулер досить описує MVVM у своїй моделі презентаційної моделі.
Вид повністю абстрагується у ViewModel. Коли View
потрібна власність, вона ViewModel
повинна мати її також. Це (ViewModel) покликане бути абсолютно незалежним від основної UI-технології, абстракції. Щоб спілкуватися між View і ViewModel, потрібно використовувати схему синхронізації (тобто Observer). Це не просто зробити в веб-середовищі без громадянства. MVVM відрізняється від MVP, оскільки View більше не пов'язується з вашою моделлю / логікою бізнесу, а замість ViewModel.
Який шаблон сучасний і який слід вибрати для Windows & Web версій своєї програми?
Модель презентації (подібна до MVVM) теоретично повинна бути повністю незалежною від використовуваних UI-технологій. Однак аспект синхронізації повинен бути висвітлений. Це легко зробити, прив’язавши до команд і властивостей з WPF, де вже присутній клей для синхронізації. З ASP.NET це вже інша історія. Однак є стаття про CodeProject, в якій використовується модель шаблону презентації з усіма технологіями інтерфейсу Windows. Гляньте.