MVVM - Модель презентации в Flex и Модель презентации в Silverlight: преимущества и недостатки? - PullRequest
1 голос
/ 10 апреля 2011

Как здесь сказано:

http://houseofbilz.com/archives/2010/12/29/cross-training-in-silverlight-flexmvvm-vs-presentation-model/

"Если вы сегодня выполните поиск в Google по запросу" MVVM and Flex ", первое сообщение будет сделано кем-то, кто утверждает, что MVVM являетсяне подходит для Flex. Я не могу с этим не согласиться. Из коробки интегрированная среда Flex значительно упрощает реализацию Presentation Model, чем аналогичные реализации MVVM в Silverlight.библиотеки, которые облегчают работу в Silverlight, но без какой-либо помощи легче выполнять во Flex. "

Таким образом, MVVM в качестве ЛОГИЧЕСКОЙ КОНЦЕПЦИИ может быть реализован в обоих, но для реализации в Silverlight требуется большеСантехника, а не Flex.

Что мешает реализовать Silverlight MVVM как Flex?Разве Silverlight не имеет такой же возможности в системе событий, чтобы делать то же самое?

Если да, то почему Silverlight делает вещи более сложными, в чем тогда преимущества?Это об использовании интерфейсов классов, которые более строго типизированы?

Каковы недостатки?Например, что касается реализации MULTIPLE VIEWS для 1 View-Model, реализация Flex делает это также более очевидным?

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Что мешает реализовать Silverlight MVVM как Flex?

в .net silverlight / wpf все должно быть прозрачным.Привязка является механизмом уведомления, поэтому она должна действовать "по крайней мере", как базовая система событий.

Если да, то почему Silverlight делает вещи более сложными, в чем преимущества?

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

кейсы: конвертер переплетов, легко реализуемый в flex, а не в silverlight.

в flex: text="{getColor(pm.customerName)}" да, это удивительно просто, но вопросВы уверены, что ваш PM будет выпущен правильно при сборке мусора, потому что это система событий, кто отвечает за наблюдение за изменениями?getColor метод?или text собственность?или оба?очень трудно это понять.

в silverlight: text="{Binding CustmerName, Converter={StaticResources nameToColorConverter}}" мне не нужно спрашивать, кто отвечает за наблюдение, потому что colorConverter - это только конвертер, поддерживаемый связыванием.мне не нужно беспокоиться об утечке памяти.

так что для меня все дело в мышлении.

1 голос
/ 10 апреля 2011

Есть две вещи, которые действительно усложняют:

  • Реализация INotifyPropertyChanged
  • Команды

Одна вещь, которую вы можете сделать в Silverlight, этоиспользуйте "Property Weaver" .Он будет делать что-то похожее на тег [Binding] во Flex, так как он будет автоматически принимать общедоступные методы получения / установки и переписывать их с использованием шаблона INPC.

Что касается команд, то методы переноса в DelegateCommand s доказываютбыть много сантехники.Есть несколько подходов к этому.Мне нравится подход, основанный на соглашениях, когда вы объявляете открытый метод с именем Execute_Something, и автоматически создается команда Something, к которой вы можете привязаться. Здесь и Здесь .

Наконец, привязка в Flex основана на выражениях, тогда как привязка в Silverlight является чисто декларативной.У меня есть несколько идей о том, когда мы получим C # v.Next, и мы можем довольно легко выполнить связывание на основе выражений.

...