Bonsoir à tous,
Je développe depuis quelques temps en C# des applis Winforms, avec une base SQL Server. Elles deviennent de plus en plus complexes et c'est compliqué de les faire évoluer et de les maintenir évidemment. J'ai donc décidé d'adopter une certaine discipline.
J'ai déjà parcouru beaucoup d'articles et je vois globalement ce que je dois faire, mais j'ai besoin d'un petit coup de main sur quelques points bien précis.
J'adopte une structure 3 couches avec un peu d'injection de dépendance, en essayant de respecter un principe SOLID, etc...
Pour prendre un exemple simple, considérons que mon appli gère des utilisateurs.
J'ai donc le Form pour l'IUI, une classe User pour l'utilisateur, une classe UserService avec son interface IUserService pour le Business et une classe UserRepository avec une interface IUserRepository pour la gestion de la BDD.
Question 1
J'instancie IUserService dans le Form, ca c'est OK. Mais qui gère User(en gros qui l'instancie et l'utilise), le Form ou UserService?
Ensuite, par exemple j'obtiens une liste d'utilisateurs pour mettre dans une ListBox avec une méthode GetAllUsers de UserService.
Maintenant je voudrais mettre une méthode UpdatePhoneNumber pour mettre à jour dans la base un utilisateur sélectionné dans cette liste.
Question 2
Mais dans quelle classe je dois mettre cette méthode, User ou UserService?
Et enfin ma dernière question qui est un peu dépendante des autres.
Question 3
Comment je communique entre l'UI et le Business? J'envoie un User en ref dans UserService, je le triture et je le récupère ensuite dans l'UI ou alors je gère tout le temps User dans UserService et je mets à jour les champs du Form avec les propriétés de User. Ce qui m'embête dans ce dernier cas, c'est que dans mon esprit, UserService est destiné à traiter des opérations sur l'ensemble des utilisateurs (en gros quand je n'ai pas d'Id User défini) et là elle traiterait également un User.
J'espère avoir été clair et je remercie par avance pour vos conseils d'experts.
Partager