Использование службы WCF в качестве модели в приложении WPF с использованием шаблона проектирования MVVM - PullRequest
3 голосов
/ 26 июля 2011

При написании приложения WPF с использованием MVVM я хочу использовать службу WCF с методами для предоставления соответствующих данных из базы данных приложений.

Например, если в моей системе есть списокЗадачи, они хранятся в базе данных SQL.Я могу поместить метод в веб-сервис для извлечения всех задач из базы данных.

Я могу вызвать этот метод из ViewModel и сохранить результаты в

public List<Task> Tasks { get; set; }

Тогда я бы связалэлемент управления моего Представления для этого свойства.

У меня уже есть кое-что для обновления моего Представления, когда свойство Задач изменилось (я не описал его выше, чтобы упростить пример).

У меня вопрос: когда кто-то еще добавляет в базу данных новую задачу, как мне обновить свойство Tasks в ViewModel?

Нужно ли опрашивать базу данных каждые x минут, чтобы найтиновые задачи (с помощью метода в службе WCF)?

Или я могу как-то сделать что-то, что обновит свойство Tasks при добавлении задач в базу данных?

Ответы [ 3 ]

4 голосов
/ 26 июля 2011

Вы можете реализовать это, используя Публикация подписки Framework для служб WCF . Это позволяет вашему приложению WPF подписываться на обновления с сервера WCF. Затем сервер будет вызывать службы WCF, предоставляемые вашим приложением WPF, когда будут доступны новые данные. Затем вы можете обновить ваши модели представления с новыми данными. Если ваша служба WCF также контролирует хранилища в базе данных, вы можете просто отследить изменения по мере их внесения и отправлять уведомления подписанным клиентам WPF.

1 голос
/ 26 июля 2011

Вам нужно выполнить какой-то опрос, чтобы выполнить эту работу.Изменения, внесенные в данные в ViewModel, обновляются напрямую (через ваши привязки), потому что все изменения происходят в памяти приложения WPF.Однако изменения в базе данных будут известны только базе данных.

Возможно, вы захотите добавить в службу WCF метод, который принимает DateTime, который будет возвращать все задачи, добавленные с данного момента времени.Затем вызывайте этот метод из ViewModel с частотой, которая имеет смысл для ваших сценариев использования и ожидаемых скоростей обновления данных.На этом этапе все добавленные новостные задачи должны отражаться в вашем представлении.

0 голосов
/ 27 июля 2011

Вы можете использовать CQRS подход в зависимости от приложения.Если приложение является простым CRUD, то, вероятно, оно того не стоит, но если вы строите более сложную модель предметной области или ищете значительную масштабируемость, возможно, стоит изучить ее.CQRS в основном отделяет ваши команды от ваших запросов.В вашем сценарии у вас могут быть реальные ViewModels, хранящиеся в БД, когда клиенты получают их напрямую оттуда, без необходимости проходить через WCF.Ваши клиенты также могут подписываться на события домена, чтобы они могли динамически обновляться по мере необходимости.

...