MVVM в Silverlight — куда идет логика асинхронной службы?

У меня есть начало моего первого приложения Silverlight MVVM, и мне нужно знать, где я должен разместить бизнес-логику, включая асинхронные вызовы службы. Идет ли он на странице, на которой размещен просмотр? Я просто устанавливаю свойство ViewModel, которое обновляет представление?


person joeldow    schedule 11.08.2009    source источник


Ответы (4)


Выполнение MVVM в Silverlight сложнее, чем в WPF, но мы это сделали. Да, мы поместили асинхронный вызов службы в ViewModel. «Модель» в нашем случае — это прокси-объекты, которые отправляются туда и обратно через вызов веб-службы. К сожалению, это означает, что некоторые из ваших функций находятся в вашей клиентской ViewModel, а некоторые — на стороне сервера. Там действительно нет никакого способа обойти это.

... и да, попросите обработчик событий Async Complete записать в свойство ViewModel и убедитесь, что это свойство (или коллекция) реализует INotifyPropertyChanged (или INotifyCollectionChanged). Если вы получаете «модельные» объекты обратно из веб-службы, и эти объекты сами не реализуют INotifyPropertyChanged, вам также следует рассмотреть объект-оболочку ViewModel вокруг них. Таким образом, если у вас есть представление для каждого из этих объектов, они могут выполнять двустороннюю привязку.

person Scott Whitlock    schedule 13.08.2009

У вас есть хороший пример от Microsoft здесь. Это очень помогло мне понять вызовы MVVM и ASYNC.

person Gabriel Mongeon    schedule 05.05.2010

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

person Preet Sangha    schedule 11.08.2009

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

person MIantosca    schedule 19.08.2009