Meilleur auteur de réponses
Question conception : TreeNode/TreeView

Question
-
Bonjour,
J'ai un programme découpé de cette manière:
- un exe qui contient le code de l'UI
- une dll, mon noyau fonctionnel
Voici mon problème:
Dans mon noyau fonctionnel, je crée 2 arbres (en utilisant le type TreeNode). Un de ces arbre est affiché dans une TreeView et je peux donc utiliser l'attribut FullPath sur les noeuds. Cependant, j'ai aussi besoin d'utiliser cet attribut sur mon 2ème arbre, qui n'a pas de TreeView.
Est-ce une erreur de conception d'ajouter un TreeView dans mon noyau fonctionnel pour avoir accès à l'attribut FullPath des noeuds sans utiliser pour autant le TreeView ? (c'est à dire d'incorporer des références à TreeView, donc Control et Form dans mon noyau fonctionnel)
Est-il préférable d'utiliser une méthode récursive pour calculer moi-même le FullPath ?
Autre point : Je souhaiterais filtrer un de mes arbres pour n'afficher que ses noeuds et pas ses feuilles. Est-il correcte de redéfinir le getter IsVisible (et donc créer un objet MyTreeNode : TreeNode) ?
Merci d'avance pour votre aide :)
Réponses
-
Bonjour,
Il ne faut pas utiliser le TreeNode dans votre couche métier (noyau fonctionnel selon votre vocabulaire). Si vous utilisez le TreeNode dans votre couche métier, vous rendez votre couche métier dépendante de Windows Forms ! (Et donc vous ne pourrez pas l'embarquer dans des environment serveur ou mobile ou Windows Forms n'est pas supporté).
Vous devez modéliser votre arbre à base de classe simple dans votre couche métier (MyNode,...etc) et au niveau IHM, vous devez créer des TreeNode qui pointe vers cet arbre modélisé.
Pour le FullPath : Par défaut, comme pour les base de données, n'introduiser pas de redondances dans vos données. Vous devez calculer récursivement la valeur de cette propriété. Après une fois l'application en recette et/ou production, si des problèmes de performances sont signalées et que la méthode "FullPath" est appellée 2000 fois par secondes, vous pouvez introduire de le redondance en mettant sa valeur dans un attribut. Bien évidemmment, il faudra faire attention au niveau des mise à jour qui peuvent impacter le changement du FullPath.
Est-ce que ces réponses ont apportées du combustible à vos lanternes ?
Cordialement
Gilles TOURREAU - MVP C#
Architecte .NET/Consultant/Formateur chez Winwise
Blog : http://gilles.tourreau.fr
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5- Proposé comme réponse Ciprian Duduiala lundi 28 novembre 2011 08:18
- Marqué comme réponse Mattmout mardi 29 novembre 2011 13:31
Toutes les réponses
-
Bonjour,
Si vous voulez faire une architecture en couches dans votre application Windows Forms, il faut que vous utilisiez le patron de conception MVP. Voici des artciles intégrant ce patron de conception:
- http://www.codeproject.com/KB/cs/ModelViewPresenterWithDI.aspx
- http://www.codeproject.com/KB/architecture/WinForms_MVP.aspx
Cordialement,
aelassas.free.fr -
Bonjour,
Il ne faut pas utiliser le TreeNode dans votre couche métier (noyau fonctionnel selon votre vocabulaire). Si vous utilisez le TreeNode dans votre couche métier, vous rendez votre couche métier dépendante de Windows Forms ! (Et donc vous ne pourrez pas l'embarquer dans des environment serveur ou mobile ou Windows Forms n'est pas supporté).
Vous devez modéliser votre arbre à base de classe simple dans votre couche métier (MyNode,...etc) et au niveau IHM, vous devez créer des TreeNode qui pointe vers cet arbre modélisé.
Pour le FullPath : Par défaut, comme pour les base de données, n'introduiser pas de redondances dans vos données. Vous devez calculer récursivement la valeur de cette propriété. Après une fois l'application en recette et/ou production, si des problèmes de performances sont signalées et que la méthode "FullPath" est appellée 2000 fois par secondes, vous pouvez introduire de le redondance en mettant sa valeur dans un attribut. Bien évidemmment, il faudra faire attention au niveau des mise à jour qui peuvent impacter le changement du FullPath.
Est-ce que ces réponses ont apportées du combustible à vos lanternes ?
Cordialement
Gilles TOURREAU - MVP C#
Architecte .NET/Consultant/Formateur chez Winwise
Blog : http://gilles.tourreau.fr
- MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
- MCITP : SQL Server 2008 Developper
- MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5- Proposé comme réponse Ciprian Duduiala lundi 28 novembre 2011 08:18
- Marqué comme réponse Mattmout mardi 29 novembre 2011 13:31
-
Est-ce que les réponses reçues vous aident avancer ? Dans l’affirmative, svp utilisez l’option « Marquer comme réponse » pour les messages qui vous les considérez utiles.
Merci de tenir la communauté informée sur la suite de vos démarches.
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.
-
Je compte suivre le conseil de Gilles. Merci beaucoup pour vos explications.
Je vais donc créer un modèle d'arbre assez simple pour ensuite créer mon arbre pour mon UI (en utilisant cette fois les TreeNode et TreeView. J'ai remarqué aussi que l'instanciation d'un objet TreeNode était assez gourmande... J'espère gagner en performance lors de la création de mon arbre. Je vous donne des nouvelles prochainement.
-
Merci pour votre feedback! :)
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.