J'ai développé une application WPF utilisant les frameworks Prism
et Unity
et je suis inquiet de savoir si je les ai implémentés correctement ou non.comment réaliser un vrai couplage lâche à l'aide de Prism et Unity
classes abstraites/interfaces - j'ai organisé des interfaces pour toutes les couches dans un ensemble et ensuite référencé dans la bibliothèque respective pour la mise en œuvre. Maintenant, la bibliothèque référencée a accès à toutes les interfaces non requises des autres couches. Par exemple la couche de service a accès aux interfaces
UI
. Est-ce la bonne mise en œuvre en termes declear separation
ou devrais-je le diviser en plusieurs assemblages.Afficher les dépendances du modèle - J'ai utilisé
EventAggregator
principalement pour communiquer entre les modèles de vue. Dans certains cas, je passe l'instance d'autres modèles de vue directement dans le constructeur et la résous en utilisant le conteneur DI. Je veux omettre la dépendance de modèle de vue directe en introduisant l'interface pour réaliser la séparation claire. Comment puis-je organiser l'interface pour les modèles de vue dans un ensemble distinct de manière à ce que les autres développeurs puissent comprendre. Pour éviter de créer plusieurs projets d'interface utilisateur, j'ai créé un seul ensemble et les ai logiquement séparés en dossiers.Résumé Classe de module - Au lieu de spécifier toutes les dépendances du fichier
bootstrapper.cs
, je les ai factorisées dans le module correspondant. La plupart de mes projets lib de classe a des références aux bibliothèques Prism. Ainsi, les espaces de noms spécifiques à l'interface utilisateur sont ajoutés à des projets connexes nonUI
. Y a-t-il une meilleure approche pour y parvenir?
Merci beaucoup. Si je peux demander, pourriez-vous s'il vous plaît m'aider à comprendre un peu plus loin sur ce qui suit. ** Classe de module abstrait ** - Est-ce une bonne idée d'implémenter une logique pour afficher/masquer une vue en fonction de certains événements pour les modules d'interface utilisateur respectifs. Par exemple S'il n'y a pas de connexion, je veux cacher tous les modules et afficher un écran d'erreur. Actuellement, j'ai un 'ViewManager' distinct qui décharge toutes les vues à un endroit. Je voudrais changer cette logique dans chaque module de 'UI', mais je suis sceptique de publier autant de notifications. –
Si c'est un événement qui affecte tous les modules, j'y réagirais de manière centralisée. Vous pouvez ajouter une région à votre shell qui couvre tout le shell et est normalement vide. Jusqu'à ce que la connexion soit perdue, naviguez dans cette région jusqu'à un écran d'erreur qui cache l'application entière. De cette façon, vous ne devez réagir qu'une seule fois à la perte de connexion et vous êtes sûr que l'interface utilisateur est désactivée. – Haukinger