Уровень сервиса WPF MVVM

Я планирую написать приложение WPF, следуя шаблону MVVM в первый раз, но что-то мне не совсем понятно , Допустим, в представлении есть «Сохранить» кнопку, и когда это нажать, мне нужно сохранить текущее состояние моих данных (модель). Это будет сделано путем отправки сообщения SOAP в службу SOAP.

Где в моей настройке MVVM живут эти обработчики запросов / ответов SOAP? Делает ли модель представления сам вызов SOAP всякий раз, когда нажимается кнопка сохранения? Должна ли модель представления уведомлять модель для сохранения себя? Может быть, это какой-то другой путь, совершенно отдельный от MVVM?

Я думал, что (по крайней мере, в этом конкретном случае) модель представления справится с этим, поскольку ей необходимо отключить кнопку сохранения в представлении, пока текущий запрос сохранения не будет завершен.

7
задан Flack 30 August 2010 в 18:59
поделиться

3 ответа

Обычно я помещаю логическое клиентское приложение/бизнес-уровень между моделью представления и уровнем SOAP/WCF/Webservice. На этом уровне живет вся бизнес-логика, не связанная с представлением, и логика обработки. Помните, что модель представления — это модель представления, а не модель предметной области. Следовательно, вы хотите передать управление следующему уровню как можно скорее.

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

5
ответ дан 7 December 2019 в 03:09
поделиться

Модель представления не должна выполнять такую ​​операцию. Это только должно спровоцировать его. Следовательно, это должна делать модель (или другой промежуточный слой, отвечающий за операции загрузки и сохранения, но не сама ViewModel).

ViewModel может наблюдать за операцией сохранения и может предоставлять информацию о состоянии для представления.

4
ответ дан 7 December 2019 в 03:09
поделиться

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

0
ответ дан 7 December 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: