Question

Je voudrais commencer une collection de MVVM-lumière (w / RIA Services) les meilleures pratiques. Il y a un certain nombre d'éléments que j'ai trouvé pour être utile les meilleures pratiques ou les meilleures approches, mais je voudrais entendre d'autres en utilisant la boîte à outils MVVM-lumière et voir ce qu'ils ont trouvé aussi bien.

S'il vous plaît poster vos meilleures pratiques réponses à cette question.

Était-ce utile?

La solution

Utilisation de base de MVVM Light

  1. intialize la DispatcherHelper dans la fonction Application_Startup du fichier App.cs
  2. Créer ViewModels des BaseClass
  3. Toujours créer une classe ViewModelLocator, qui contient tous vos modèles de vue et est lié dans vos ressources d'application
  4. Utilisez RelayCommands pour exposer les fonctions à votre point de vue
  5. En savoir quand utiliser le DispatchHelper.

Idées de nettoyage:

  1. Le cas échéant, ajouter à votre ViewModel pour effacer votre EntitySet de DomainContext sur le nettoyage ()?
  2. Appelez votre fonction CleanupSomeVM de ViewModelLocator () pour viewmodels claires quand ils ne sont plus activement nécessaires dans l'application.

J'aimerais entendre des autres quand / comment vous utilisez les fonctions de nettoyage. Comme ma demande se développe, je ressens le besoin d'ajouter des fonctions de nettoyage afin de mieux gérer l'utilisation de la mémoire du client.

Pour blendability:

  1. Résumé des services / requête à une interface Implémentations.
  2. Créer 2 classes pour chaque cours de mise en œuvre de services (1 pour la conception, 1 pour la production)
  3. Dans votre chaque ViewModel, mettre en œuvre sa propre classe de service (utilisation IsInDesignMode) pour créer des implémentations de services Blendable si nécessaire.
  4. Utilisez un Variable statique pour tenir votre DomainContext au sein du Service implmentation classe.
  5. Ajouter DispatcherHelper.Initialize () dans le constructeur de ViewModels, mais seulement en mode conception. Blend ne se charge pas App lors du chargement d'une page, et cela fonctionne autour de cela.

Ajout d'entreprise Logic:

  1. Ajoutez une logique d'entreprise dans le modèle d'abord, puis dans le ViewModel.
  2. Utiliser des méthodes partielles du modèle pour ajouter une logique pour les événements changement / mise à jour appropriés.
  3. Ajouter des propriétés en lecture seule (uniquement getter) de fournir le résumé et les valeurs calculées sur votre modèle.

Vues:

  1. Toujours Bind la racine à l'objet Locator.
  2. Essayez de garder la logique derrière de code pour la mise en page ou seulement la logique de l'interface utilisateur personnalisée. Évitez le référencement de votre ViewModel.

Pour Collections:

  1. Utilisez CollectionViewSource pour les collections dans vos ViewModels, avec une source de EntitySet du DomainContext
  2. Appliquer tout le filtrage, le tri et le regroupement logique à la CollectionViewSource dans votre ViewModel.
  3. Après ServiceCalls, appel .View.Refresh () sur vos objets CollectionViewSource si nécessaire pour mettre à jour l'interface utilisateur.

Pour la coordination ViewModel (Logic Controller)

  1. Utiliser des messages avec modération, trop de complexité peut être difficile à gérer.
  2. Utilisez les classes NotificationMessage et PropertyChangedMessage pour envoyer / recevoir avec.

Pour RIA DomainServices:

  1. Mettre en œuvre toute exploitation forestière dans la fonction modifications persistent, et non la mise à jour / insertion / suppression logique.
  2. Pendant l'insertion, mise à jour, les fonctions de suppression, si vous avez besoin de faire référence à une autre entité via la navigation Propriété, soit vérifier la EntityStatus première ou charger l'entité d'un autre contexte, pour éviter les conflits EntityStatus.

Pour le débogage / test:

  1. Vérifiez la fenêtre de sortie pour la liaison erreurs et de les corriger. Les erreurs de liaison ne silencieusement à l'utilisateur, mais les performances des applications se dégradent et le comportement attendu.
  2. Créer des tests unitaires dans Silverlight pour vérifier tout ajouté Modèle / logique métier
  3. Créer un projet de test unitaire à la logique côté serveur de test et fonctions

Pour Entity Framework:

  1. Gardez 1 à 1 match de EntitiesContext au service de domaine. Essayer de diviser cette autre façon provoque des problèmes.
  2. Ne pas utiliser la [Composition] attribut à moins que vous avez l'intention complètement de passer beaucoup de temps à construire soigneusement votre Insert, Update et Delete logique.
  3. Utilisez un service distinct pour servir types personnalisés de retour à votre client RIA. Ne pas les ajouter à votre DomainService pour votre objet EntityFramework
  4. Effectuer la mise à jour côté serveur / INTEGRATIONn logique (comme la mise à jour d'autres systèmes) dans la fonction PersistChangeSet, pas dans les Insertion, mise à jour, les fonctions de suppression. Cela vous évitera de tirer accidentellement dans une entité via Propriétés de navigation, qui laissera votre version détachée non mis à jour.
  5. Créer un contexte supplémentaire pour trouver les valeurs actuelles lors de la mise à jour / logique d'intégration.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top