Je prévois d'écrire une application WPF suivant le modèle MVVM pour la première fois, mais quelque chose ne me semble pas très clair. Disons que la vue a un bouton "Enregistrer" et quand cela est touché, j'ai besoin de sauvegarder l'état actuel de mes données (le modèle). Cela sera fait en envoyant un message SOAP à un service SOAP. Où se trouvent les gestionnaires de requêtes/réponses SOAP dans ma configuration MVVM? Le modèle de vue fait-il appel SOAP lui-même à chaque fois que le bouton de sauvegarde est touché? Le modèle de vue doit-il notifier le modèle pour qu'il se sauvegarde à la place? Peut-être que c'est un autre moyen, complètement séparé du MVVM? Je pensais que (du moins dans ce cas précis) le modèle de vue le manipulerait puisqu'il doit désactiver le bouton de sauvegarde dans la vue jusqu'à ce que la demande de sauvegarde en cours soit terminée.Couche de service MVVM
Répondre
Je place généralement une application/couche de gestion côté client logique entre le viewmodel et la couche SOAP/WCF/Webservice. Cette couche est l'endroit où vit toute la logique métier et la logique de traitement sans vue. Rappelez-vous, le viewmodel est le modèle de la vue, pas le modèle du domaine. Par conséquent, vous souhaitez transférer le contrôle à la couche suivante vers le bas dès que possible.
Dans ce scénario, je voudrais que la vue déclenche une commande save sur le viewmodel, qui à son tour appelait dans la couche application, qui à son tour effectuer des appels aux services distants.
Le ViewModel ne devrait pas effectuer une telle opération. Cela devrait seulement le déclencher. Par conséquent, le modèle doit le faire (ou un autre calque intermédiaire responsable des opérations de chargement et d'enregistrement, mais pas du ViewModel lui-même).
Le ViewModel peut observer l'opération de sauvegarde et peut fournir des informations d'état sur la progression de la vue.
Je créer un gestionnaire de service accessible par ViewModel. Transmettez ceci dans le constructeur du viewmodel, et appelez les méthodes exposées par le gestionnaire de service.
- 1. Modèle de couche de service - Pourrions-nous éviter la couche de service dans un cas spécifique?
- 2. Couche de service pouvant basculer entre la couche de service Web et la couche d'accès aux données
- 3. Structure de données complexe dans la couche ViewModel du MVVM
- 4. méthode de couche de service d'appel mvc
- 5. NHibernate et une couche de service REST
- 6. Portlet, Spring, couche de service injection HttpSession
- 7. Créer couche de service en asp.net mvc
- 8. Couche de service répète mes dépôts
- 9. Couche de service et objets auxiliaires?
- 10. Authentification personnalisée avec la couche de service?
- 11. Modèles et pratiques. Couche de service?
- 12. comment appeler un service intérieur couche de service
- 13. Conseils Avec référentiel/service Design Pattern couche
- 14. Séparation de la couche de service de la couche Web dans une application Spring
- 15. Gestion des transactions dans la couche de service ou la couche de référentiel?
- 16. Passage de l'objet de requête dans la couche de service
- 17. Validation de données de base dans la couche de service
- 18. Génération de la couche de service avec Hibernate
- 19. MVC, couche de service et téléchargement/stockage de fichiers
- 20. asp.net couche de service et mvc unité de travail
- 21. Couche de service et contrôleur: qui prend soin de quoi?
- 22. Révéler couche d'affaires LinqToSQL via le service de données WCF
- 23. Comment gérer la validation de la couche service dans MVC3
- 24. Couche de service d'application en tant que classes statiques
- 25. Est-ce que j'utilise la couche de service correctement?
- 26. WSDL en premier pour la couche de service existante
- 27. Dois-je dupliquer la validation dans ma couche MVC et dans la couche Service?
- 28. MVVM dans Silverlight - Où va la logique de service async?
- 29. Utiliser les services dans MVVM
- 30. ASP.NET: couche de données indépendantes accses couche
J'ai commencé à écrire une réponse, puis j'en ai parlé moi-même, et +1 à la place. Mon instinct est que le Modèle devrait le gérer, puisque la plupart des ViewModels utilisent un DataContext du Modèle, mais cela ne met pas vraiment à jour le Modèle lui-même, mais plutôt quelque chose en dehors de ce Modèle ... –