2010-08-17 4 views
2

Je développe une application EMR comme projet. J'utilise WCF pour transférer toutes les données du serveur centralisé, WPF pour l'interface utilisateur et PRISM pour construire des modules.Quelle est la meilleure façon d'utiliser WPF, WCF, PRISM

J'ai 3 projets dans ma solution pour une application WPF/PRISM

  1. Le projet principal (mainApplication) où la coquille et bootsrapper sont.
  2. bibliothèque de classe (modulesLib) pour contenir tous les modules
  3. bibliothèque
  4. classe (infrastructure) pour communiquer avec le service WCF (Service de référence ajouté avec scvutil.exe en studio visuel 2008)

références du projet sont ajoutés comme ci-dessous

  • mainApplication avoir des références de 'modulesLib' et 'infrastructure'
  • modulesLib ont refence à 'infrastructure'

ma procédure actuelle est inférieure à

  1. Il y a 6 services WCF (6 hôtes) exposés à l'aide d'un service de fenêtres
  2. détails de base de données codées dur à l'intérieur des implémentations de service WCF (requêtes, champs, tables)
  3. appeler les services WCF directement avec viewmodels/présentateurs pour les modules (via la bibliothèque d'infrastructure).
  4. classes créées appelé abstraite ViewModelBase (qui met en œuvre INotifyPropertyChanged, ayant également IUnityContainer, IRegionManager, références IEventAggregator), abstrait ModuleBase (qui met en œuvre IModule) et j'utiliser ces 2 classes d'hériter de chaque fois que j'ajouter un viewmodel ou un module
  5. Je mets toutes les propriétés de liaison de données pour viewmodel et utiliser le constructeur de viewmodel instancier une vue donnée, définir son contexte de données et l'ajouter à une région dans la coquille
  6. Liste article

chaque fois que je veux communiquer entre modules, j'utilise CompositePresentationEvents

ce que je voudrais savoir

  1. si la façon dont je l'ai fait les choses, est-il semble OK pour vous les gars.
  2. Toujours il ya des charges d'erreurs, des bugs de crash etc. je peux avoir un seul endroit pour manipuler ces exceptions ainsi l'application ne cassera pas (notation ou quelque chose comme ça)
  3. quelle serait votre manière de travailler sur un projet en utilisant WPF, WCF, MSSQL et PRISM

merci, Nadun

Répondre

2

la plupart des choses que vous avez fait est très bien.

Mais pour le module de journalisation: Créez un projet de séparation dans votre infrastructure et enregistrez-le comme un objet singleton avec Unity.

2- Pour un meilleur test unitaire de votre projet, utilisez unity at full comme créateur de dépendances de votre classe comme dépend du contrat plutôt que de l'implémentation réelle.

3- Pour la communication entre vos modules utilisent EventAgreegator

4- Pour les commandes globales utilisent CompositeCommand. 5- Si votre interface utilisateur dispose de contrôles de sélecteur tels que Combobox, ListBox, essayez d'étendre la propriété Attached comme dans Composite Application for Button, de façon à ce que vous ne sélectionniez pas l'événement modifié dans votre code. être capable d'appeler des commandes.

+0

Salut saurabh, plusieurs points dans votre message ont attiré mon attention :). l'extension de propriété attachée (je gère actuellement l'élément sélectionné modifié en liant une propriété sur viewModel à selectedItem de la liste/combo, puis dans l'implémentation INotifyPropertyChanged j'ai mis un commutateur pour exécuter une autre méthode) et l'approche de journalisation. Je vais faire des recherches sur ceux-ci. Si cela ne vous dérange pas, je vais laisser la question sans réponse afin qu'il y ait encore de la place pour que les gens partagent leurs pensées. J'espère que c'est bon pour vous :) Merci d'avoir répondu .. – Nadun

+0

Lisez le [Manuel Prism] (http://msdn.microsoft.com/en-us/library/gg406140.aspx) de bout en bout. cela vous donnera des millions d'idées sur MVVM, commanding et event2command etc. – Shimmy

Questions connexes