2009-05-29 7 views
6

Quelqu'un m'a dit dans un answer to a stackoverflow question que les "deux gros canons" pour le modèle MVVM sont 1) comportements attachés et 2) services. Je suppose qu'il signifie "services WPF" une phrase que j'ai trouvé utilisé de la manière suivante:Que sont exactement les "services WPF"?

PresentationFoundation.dll définit les types contrôles WPF, l'animation et support multimédia, la liaison de données support, et d'autres Services WPF.

Beaucoup de ces services WPF (concours complet de couplage, riche liaison de données, style, ressources, etc.) sont des logiciels les meilleures pratiques de développement qui convergent vers une seule interface utilisateur déclarative pile.

Vous comprendrez la motivation derrière WPF, apprendre la syntaxe de XAML, examiner le modèle de programmation de base, et enquête à plusieurs services WPF.

Aucun des livres WPF je parle même des « services WPF » en tant que tel, donc est-ce juste un mot qui signifie « WPF Bouilloire » tels que le concours complet découplé, databinding riche, style, etc. ou Y a-t-il autre chose derrière le terme "WPF Services"?

+0

Oui, c'est à propos des fonctionnalités. Je dirais que dans ce contexte, les «services» ne sont qu'un mot à la mode pour améliorer le son. Tout comme "expérience utilisateur" et similaires. – Botz3000

Répondre

3

Il ne parle pas des services WPF, mais des services applicatifs. C'est-à-dire, abstraction d'une partie de la fonctionnalité dans un service indépendant que plusieurs machines virtuelles peuvent consommer.

+0

Qu'est-ce que cela signifie exactement, parlez-vous d'un Service Web Windows? L'article wikipedia sur WPF donne des exemples de «services d'application WPF» comme «interface utilisateur, dessin 2D et 3D, documents fixes et adaptatifs, typographie avancée, graphiques vectoriels, graphiques raster, animation, liaison de données, audio et vidéo». Qu'est-ce que cela signifierait alors que, par exemple, "plusieurs ViewModels peuvent consommer des données". C'est toujours le cas. Qu'est-ce qui se cache derrière ce mot "services WPF" et "services applicatifs" dans ce sens? Ou voulez-vous dire au sens classique du terme "services de sécurité"? –

+3

Par "service", je veux juste dire une abstraction sur une fonctionnalité. Peut-être que la fonctionnalité sous-jacente est un composant COM, ou un accès à la base de données ou autre. Peu importe - la VM ne connaît qu'une interface qu'elle peut utiliser pour interagir avec cette fonctionnalité. –

13

Martin Fowler a une description de ce qu'est un service dans son article Dependency Injection. En termes simples, un service est un objet qui fournit des fonctionnalités à utiliser par d'autres objets. Vous trouverez le terme utilisé fortement lors de la discussion sur les modèles Inversion of Control et Service Locator.

Pour concrétiser le sujet, réfléchissons à la façon dont nous afficherions une boîte de message dans le modèle MVVM. Appeler MessageBox.Show() serait mauvais, Ray. Cela lie étroitement le ViewModel à l'architecture de l'interface utilisateur et rend le ViewModel difficile à tester. Au lieu de cela, une solution consisterait à utiliser un service, que nous appellerons IDisplayMessage. Ce service est en quelque sorte fourni au ViewModel (via l'un des deux modèles ci-dessus), et ce service est utilisé pour "afficher" un message. En fonctionnement normal, une version concrète de ce service appellera MessageBox.Show(), mais lors des tests, nous pouvons fournir une version concrète différente (un test double) qui se comporte différemment (un noop souvent, ou si nous nous assurons que ViewModel affiche le message, une version qui enregistre l'appel afin que nous puissions affirmer qu'il s'est produit). Onyx (avertissement: je suis l'auteur) fournit juste un tel service, et l'infrastructure nécessaire pour fournir ce service (et d'autres) à votre ViewModel.

Mise à jour: Depuis que cette réponse a été faite, j'ai écrit un billet de blog Services: Your ViewModel Deathstar, qui couvre assez bien le sujet. Cela faisait partie d'une "série" de messages, et les lecteurs peuvent également être intéressés par le premier article Behavior - Your Trusty ViewModel Bazooka.

+1

Pourquoi ne pas pointer vers vos articles? : Behaviors attachés http://wekempf.spaces.live.com/Blog/cns!D18C3EC06EA971CF!940.entry Services: http://wekempf.spaces.live.com/Blog/cns!D18C3EC06EA971CF!951. entrée – Trainee4Life

+0

A l'époque, les articles n'existaient pas, et je n'ai juste pas pensé à revenir ici et mettre à jour la réponse. – wekempf

Questions connexes