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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Février 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 106
    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
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    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 067
    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 Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    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, 16h31
  2. liaison entre les points dans une courbe
    Par benza dans le forum MATLAB
    Réponses: 3
    Dernier message: 28/12/2012, 14h58
  3. Espace entre les ToolItem dans une Toolbar
    Par kkt8 dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 09/08/2012, 10h09
  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, 15h30

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