J'essaye d'implémenter cette architecture pour la première fois dans un Winform. J'ai donc une question simple mais très importante pour moi. Prenons un exemple simple. Je veux que le formulaire récupère une liste d'utilisateurs et permette une modification du numéro de téléphone. J'ai cela pour la première étape (simplifié et j'utilise normalement des interfaces)Architecture à 3 couches dans une application Winform
public Form1()
{
InitializeComponent();
UserService _userService = new UserService();
listBoxUsers.DataSource = _userService.GetAllUsers();
}
class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
}
class UserService
{
UserRepository _userRepository=new UserRepository();
public Dictionary<int, string> GetAllUsers()
{
DataTable dtbl= _userRepository.AllUsers();
//Some code here
return dict;
}
}
class UserRepository
{
public DataTable AllUsers()
{
//Sql query
return dtbl;
}
}
Maintenant, en sélectionnant un utilisateur dans le lisbox, je suis en mesure d'afficher des informations comme le numéro de téléphone. Quand je change le numéro de téléphone, j'ai besoin d'une méthode appelée UpdatePhoneNumber pour mettre à jour la base de données SQL. Mais, où le placer? Utilisateur ou UserService (je ne parle pas de la requête SQL, juste la logique) Et après cela, comment accéder (ici ou ailleurs dans l'application) à cette propriété de l'utilisateur pour l'afficher dans le formulaire? Directement avec _user.Id (l'utilisateur doit être instancié dans le formulaire) ou implémenter un _userService.The identifiant qui récupère User.ID (dans ce cas, le formulaire ne connaît que la classe UserService). Un grand merci pour votre aide précieuse
Pourquoi 'GetAllUsers()' renvoie-t-il un 'Dictionary'? Je m'attendrais à un 'Dictionary ' (ou même juste un 'IEnumerable '). 'User' est * juste * un objet de transfert de données.Ainsi, lorsque vous changez le numéro de téléphone * ou toute autre propriété *, modifiez-le simplement dans le DTO, puis utilisez une méthode comme Update (utilisateur utilisateur) dans le service et dans le référentiel. Le service chargé de vérifier si quelque chose a changé du tout et le référentiel d'écrire réellement les modifications apportées à la base de données (ou tout type de stockage). –
Corak