Единственное преимущество, которое я могу придумать, относится к шаблону MVVM над MVP (вариант которого он является) в том, что в MVVM вам не нужно явно присоединять View к ViewModel (Presenter), когда выбудет в реализации MVP.Это обеспечивается средствами, предоставляемыми WPF.(BindingExpressions наиболее важно) В MVP вы должны определить интерфейс, который представляет, как докладчик может взаимодействовать с представлением (IxxxxView - это обычный шаблон именования), и когда вы создаете докладчика, вы передаете ему интерфейс представления (который прикреплендля просмотра экземпляра).Это также допускает некоторые варианты представления поверх обычного презентатора.
В MVVM вы не определяете этот интерфейс явно.Вы определяете свою ViewModel и используете Binding для привязки ViewModel (логика) к View (презентация).В View нет внутренних знаний о ViewModel, поскольку привязки (если они выполняются в XAML) разрешаются во время выполнения (или иногда в конструкторе).Теоретически приложение WPF должно быть полностью управляемым без пользовательского интерфейса.
Преимущество, которое вы получаете от MVVM / MVP / MVC, - это, прежде всего, разделение проблем между представлением и бизнес-логикой и тем, что это позволяет.Это позволяет специально квалифицированным ролям (читай: фактическим графическим дизайнерам) работать над презентацией, не зная ничего о коде C # / VB.NET.Они могут построить презентацию, и разработчики придут и подключат ее потом.
Также у разработчиков теперь есть шаблоны, позволяющие автоматизировать тестирование кода с помощью модульных тестов.Поскольку приложения могут управляться (в основном) без пользовательского интерфейса, модульные тесты являются отличным инструментом, позволяющим разработчикам по-настоящему использовать весь код, который они пишут.
На самом деле это не касается сравнения между "N-Уровень "и MVVM, хотя, потому что я не знаю, что это сравнение яблок с яблоками.Возможно, приложения MVFM WPF являются N-уровневыми приложениями с несколькими логическими уровнями в решении.
В конечном счете, MVVM / MVP / MVC - это очень сопоставимые модели с одинаковыми преимуществами.Хотя есть одна вещь, которая заключается в том, что MVVM, насколько я знаю, может использоваться только тогда, когда WPF / Silverlight является предпочтительной технологией представления.И я думаю, что это особенное преимущество MVVM.Это конкретный и оптимальный шаблон для нас в WPF / Silverlight.После использования MVVM было бы неудобно использовать любой другой шаблон в WPF.