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