Каковы сильные и слабые стороны различных сред MVVM для Silverlight? - PullRequest
3 голосов
/ 20 октября 2010

Каковы сильные и слабые стороны различных сред MVVM для Silverlight?

Я знаю, что подобные вопросы задавались и раньше, но поле быстро меняется, и ответы быстро устаревают.

Я специально ищу краткую оценку следующих структур -

  • Призма
  • Caliburn
  • Cinch
  • Goldlight
  • MFedMVVM
  • MVVM Light
  • nRoute
  • структурированный MVVM

... плюс любые другие, о которых кто-либо знает.

Ответы [ 2 ]

2 голосов
/ 14 января 2011

Недостаток любого фреймворка тот же: это чужой код и чужая реализация шаблона. Вы передаете контроль над решением чужого кода. Если вам это удобно, во что бы то ни стало, сделайте это.

Но MVVM - это действительно простой шаблон для понимания. Реализация его на самом деле довольно тривиальна; WPF и Silverlight включили большинство основных компонентов, необходимых для работы связывания и, таким образом, для работы MVVM.

Я обнаружил, что все, что мне действительно нужно для MVVM, - это агрегатор событий для обмена сообщениями между классами, класс модели базового представления для обработки повторения кодирования INotifyPropertyChanged, а затем контейнер IoC для подключения моих зависимостей. Вот и все.

После моего опыта работы с блоком пользовательского интерфейса компонентных приложений я склонен уклоняться от чьей-либо "инфраструктуры". Особенно, если я могу написать основные биты самостоятельно в короткие сроки.

Мы выполняем MVVM в наших проектах на моей нынешней работе, и моя инфраструктура - это буквально пара классов и интерфейс для того, о чем я говорил выше.

1 голос
/ 14 января 2011

Я не могу говорить за другие перечисленные фреймворки, но могу сказать, что у меня был большой успех с MVVM Light Toolkit. Я сочувствую той точке зрения, что вы можете «свернуть свой» фреймворк, когда вам это нужно, но MVVM Light маленький и ненавязчивый; он не берет на себя архитектуру вашего приложения, а просто обеспечивает несколько основных потребностей MVVM:

  1. RelayCommand - Командный класс, который вы можете использовать для чего угодно

  2. Сообщения - Возможность обмена сообщениями и агрегации сообщений

  3. ViewModelBase - Реализует INotifyPropertyChanged и т.д ...

  4. ViewModelLocator - простая утилита для внедрения ViewModel в виды.

Я думаю, что реакция на фреймворки, вызванная чем-то вроде блока пользовательского интерфейса приложения компонентов (и его двоюродного брата Silverlight, Prism), должна быть смягчена фреймворком, таким же легким и простым, как этот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...