IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

couplage de DTO entre les couches dans une architecture microservice


Sujet :

ASP.NET

  1. #1
    Membre régulier

    Inscrit en
    février 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : février 2009
    Messages : 106
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut couplage de DTO entre les couches dans une architecture microservice
    Bonjour

    Je ne suis pas un expert danc aillez une indulgence à l'égard de mon questionnement si je dis une bêtise.

    J'ai un projet Asp.net core (.Net 5) et j'ai une architecture Winform pour le Frontend, et le backend { couche service (contrôleurs Web API), couche application (logique) "dll", couche domaine"dll", couche Repository (persistance) "dll" }
    L'utilisateur envoie une DTO vers l'api et ceci ce traduit automatiquement vers une DTO local dans le contrôleur et ceci se fait d'une manière transparente "mapping json via le middleware"
    Maintenant mon contrôleur envoie cette DTO local vers la couche application via le pattern Mediator et une conversion manuelle via Automapper se fait dans cette couche vers un model du Domain pour être persisté dans la bdd ensuite via la couche repository.
    Il y à donc une dépendance entre la couche service et la couche Application et un couplage pour pouvoir utiliser le model DTO passé en argument et ceci me laisse perplexe.
    Donc est ce que c'est tolérable ce couplage ? si oui bon bah je laisse comme ça.

    Si non j'aurai aimé un moyen de faire le parse automatiquement comme le fait le backend (contrôleur via le middleware) sans pour autant que le type sois référencé.
    Si comme si j'aimerai faire passer une DTO vers une autre application sans pour autant que le type sois référencé dans l'autre coté.
    Il y à la possibilité de le convertir en json, ceci va résoudre le problème mais je ne suis pas fan et j'aimerai un autre moyen SI ça existe.
    Il y à une autre possibilité d'utiliser un model dans le Domaine qui est partagé entre tous les couche comme ça tous le monde est content mais bon j'aimerai aussi éviter cette dépendances et aussi des fois j'utiliser des version minimal du model original donc je dois limité les propriété et ne sois pas tous exposés "surtout lors de la lecture j'utilise le model original, pour l'écriture j'utilise un model spécifique limité "sans le id, dateDeCreation, dateDedition" (CQRS)
    Peut être qu'il y à un paterne qui résous ce problème.

    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    novembre 2010
    Messages
    2 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2010
    Messages : 2 063
    Points : 4 226
    Points
    4 226
    Par défaut
    Perso j'utilise le Dto que dans la couche controlleur, je fais le mapping à cet endroit là et dans la couche service et repository je n'utilise que les Entity.
    En CQRS t'as pas forcément les même entity entre la partie lecture et la partie persistance (ce pattern je ne l'utilise pas, je peux pas t'aiguiller plus que ça).

  3. #3
    Membre expérimenté

    Homme Profil pro
    Développeur multimédia
    Inscrit en
    juillet 2004
    Messages
    987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2004
    Messages : 987
    Points : 1 735
    Points
    1 735
    Billets dans le blog
    1
    Par défaut
    Salut le couplage faible passent par les IOC, elles résoudra par elle-même les notions de dépendances et de persistances.
    En ce qui concerne la manipulation des données je pars du principe qu'il faut mapper nos tables au niveau des services ou API : incluant les domaines, entités, et DTO.
    Côté MVC ou MVVC l'utilisation des DTO's doit se faire seulement lorsqu'on appel un service, et le passage des données au views (web) ou winform (application) ... doit impérativement passer par des views models cela permet de ne pas exposer les DTO's dont le rôle n'est pas l'affichage des données mais bien de transfert SVC <-> MVC.
    Le passage entre DTO et view model doit se faire via des converters c'est un moyen simple de séparer les différentes couches.
    Cette méthodes est souvent utilisé dans les architectures SOA.
    Bien à toi.

Discussions similaires

  1. Basculer entre les sheet dans une Macro
    Par Nymar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/09/2014, 17h31
  2. liaison entre les points dans une courbe
    Par benza dans le forum MATLAB
    Réponses: 3
    Dernier message: 28/12/2012, 15h58
  3. Espace entre les ToolItem dans une Toolbar
    Par kkt8 dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 09/08/2012, 11h09
  4. ne veut pas d'espaces entre les images dans une cellule
    Par cortex024 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 07/12/2006, 16h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo