Всегда используйте MVVM в приложении WPF, или альтернативные шаблоны все еще практичны / полезны?

На странице 374 в книге Microsoft .NET Architecting Applications for the Enterprise есть диаграмма, показывающая эволюцию шаблонов для уровня представления и их влияние на платформах (рис. 7-14).

Помимо демонстрации эволюции от исходного шаблона MVC к более современным вариантам, эта диаграмма также показывает, что следующие современные шаблоны могут применяться в следующих технологиях:

  1. Модель2 (MVC)
    • Только Интернет
  2. Пассивный просмотр (MVP)
    • Интернет
    • WinForms
    • WPF
  3. Контроллер контроля (MVP)
    • Web
    • WinForms
    • WPF
  4. MVVM (модель представления) { {1}}
    • Только WPF

Примечание: Еще один недавний интересный паттерн, которого нет в этой таблице, - это Presenter First (MVP) , который, как предполагалось, был более приспособлен к TDD.


Насколько я понимаю, если кто-то разрабатывает с помощью WPF, то шаблон MVVM является фактическим выбором (вроде как Model2 для веб-разработки). Тем не менее, похоже, ничто не мешает использовать Passive View , Supervising Controller или Presenter First в приложении WPF. Такой подход привел бы к созданию приложения, которому все равно, является ли внешний интерфейс WPF, WinForms или Интернетом.Похоже, что эти варианты MVP обеспечивают большую гибкость.

Однако происходит ли стремление к гибкости, не зависящей от UI-платформы (которая может не потребоваться), за счет того, что разработка WPF становится намного более сложной и теряется часть функций / возможностей, которые предлагает WPF? Настолько, что затраты перевешивают выгоды?

Другими словами, действительно ли MVVM настолько хорош, что не следует рассматривать другие альтернативы в приложениях WPF?

18
задан Matt 2 March 2011 в 16:52
поделиться