8
votes

Couche de service WPF MVVM

Je prévois d'écrire une application WPF suite au modèle MVVM pour la première fois, mais quelque chose n'est pas tout à fait clair pour moi. Disons que la vue a une touche "Enregistrer" et lorsque cela est touché, j'ai besoin d'enregistrer l'état actuel de mes données (le modèle). Cela se fera en envoyant un message de savon à un service de savon.

Où dans ma configuration MVVM, ces gestionnaires de requête / de réponse vivent-ils? Le modèle de vue appelle-t-il le savon lui-même chaque fois que le bouton SAVE est touché? Si le modèle d'affichage avertit le modèle pour se sauver à la place? Peut-être que c'est une autre façon, complètement séparée du MVVM?

Ma pensée était que (au moins dans ce cas particulier) Le modèle de vue le gérerait car il doit désactiver le bouton Enregistrer dans la vue jusqu'à ce que la demande d'enregistrement actuelle soit terminée.


1 commentaires

J'ai commencé à écrire une réponse, puis je me l'ai parlé, et +1 à la place. Mon instinct est que le modèle doit le gérer, car la plupart des illustrations utilisent un DataContext du modèle, mais cela ne met pas vraiment à jour le modèle lui-même, mais plutôt quelque chose à l'extérieur de ce modèle ...


3 Réponses :


5
votes

I Mettez généralement une application logique de l'application / entreprise côté client entre la vue ViewModel et la couche SOAP / WCF / WebService. Cette couche est l'endroit où la logique et la transformation de la logique de traitement de l'entreprise ne sont pas une vue. N'oubliez pas que la viewModel est le modèle de la vue, pas le modèle du domaine. Par conséquent, vous souhaitez remettre le contrôle de la couche suivante dès que possible.

Dans ce scénario, j'aurais la vue déclencher une commande de sauvegarde sur le point de vue, qui appellerait à son tour dans la couche d'application, ce qui apporterait à son tour des appels vers des services distants.


0 commentaires

4
votes

Le point de vue, ne doit pas faire une telle opération. Cela devrait seulement le déclencher. Par conséquent, le modèle doit le faire (ou une autre couche intermédiaire responsable des opérations de charge et de sauvegarde, mais pas le mode de vue lui-même).

Le point de vue peut observer l'opération de sauvegarde et peut fournir des informations d'état sur les progrès de la vue.


0 commentaires

0
votes

Je créerais un gestionnaire de service accessible par le point de vue de la vue. Transmettez cela dans le constructeur de la vue, et appelez les méthodes exposées par le gestionnaire de service.


0 commentaires