Я надеюсь, что название отражает то, что я действительно спрашиваю.Мне кажется, что когда люди предпринимают разработку на основе XAML
, использовать ли MVVM
- это даже не вопрос, а скорее понятный факт.Исходя из опыта Winforms и Webforms, я обнаружил, что мы почти никогда не использовали MVP
(например).Хорошо понималось, что основными причинами перехода на путь MVP
(кроме того, чтобы быть пуристом) является более высокий уровень модульного тестирования и возможность обмениваться «логикой представления» с различными пользовательскими интерфейсами.Что касается последующего, это никогда не было требованием в моих проектах.Если что-то у нас могло быть несколько пользовательских элементов управления для этой цели.
Что касается модульного тестирования, я никогда не считал необходимым тестировать мой code behind
, потому что он ничего не делал, кроме обработки событий пользовательского интерфейса и выступать в качестве прокси(создать экземпляр и связать) с моим бизнес-уровнем.Я могу понять, что если люди обойдут бизнес-уровень и создадут экземпляры своего любимого уровня доступа к данным непосредственно в коде, то применим бизнес-логику прямо там, где MVP принесет огромную пользу.В моем случае я всегда ставлю DAL на BLL, так где же здесь настоящий «выигрыш» в отношении юнит-тестирования?
Суть в том, что MVP никогда не использовался автоматически.Сейчас я смотрю на возможность использования Sliverlight (впервые) в проекте, и я чувствую, что совершу грех, если не буду использовать MVVM.
Я знаю, что есть убойиз мелочей, которые специфичны для MVVM, возможно, которые раньше не рассматривались, когда я принимал решение «MVP или нет MVP».Я читал о поддержке Blend (у меня даже нет Blend), может быть, о некоторых других важных аспектах?Суть в том, что MVVM действительно намного важнее для Silverlight, чем MVP, например, для Webforms?Или мы находимся в эпоху Возрождения, посвященную разработке .NET, когда шаблоны и лучшие практики занимают центральное место (вроде Java).