На странице 374 в книге Microsoft .NET Architecting Applications for the Enterprise есть диаграмма, показывающая эволюцию шаблонов для уровня представления и их влияние на платформах (рис. 7-14).
Помимо демонстрации эволюции от исходного шаблона MVC к более современным вариантам, эта диаграмма также показывает, что следующие современные шаблоны могут применяться в следующих технологиях:
Примечание: Еще один недавний интересный паттерн, которого нет в этой таблице, - это Presenter First (MVP) , который, как предполагалось, был более приспособлен к TDD.
Насколько я понимаю, если кто-то разрабатывает с помощью WPF, то шаблон MVVM является фактическим выбором (вроде как Model2 для веб-разработки). Тем не менее, похоже, ничто не мешает использовать Passive View , Supervising Controller или Presenter First в приложении WPF. Такой подход привел бы к созданию приложения, которому все равно, является ли внешний интерфейс WPF, WinForms или Интернетом.Похоже, что эти варианты MVP обеспечивают большую гибкость.
Однако происходит ли стремление к гибкости, не зависящей от UI-платформы (которая может не потребоваться), за счет того, что разработка WPF становится намного более сложной и теряется часть функций / возможностей, которые предлагает WPF? Настолько, что затраты перевешивают выгоды?
Другими словами, действительно ли MVVM настолько хорош, что не следует рассматривать другие альтернативы в приложениях WPF?