2

Je trouve que chaque fois que je crée une couche/niveau, je dois traduire d'une couche à l'autre, est-ce que cela veut dire que c'est un système étroitement couplé? Si je devais changer une logique métier, supprimer un champ dans la base de données, etc., je devrais changer TOUS les calques de la couche de base de données vers le frontal client?Le système Multi Tiers/Multi Layers équivaut à un système étroitement couplé?

E.g. Un service Web qui expose un objet "contrat de données" et le convertit en "objets métier" dans la couche intermédiaire, puis le convertit en "objet ORM" approprié dans la couche de données. Et le client appelant le service Web, convertit le contrat de données à certains objets de modèle, etc ...

Puisqu'il y a tellement de traductions entre les deux, comment les services Web peuvent-ils être conçus pour être couplés de manière lâche? Juste en prenant ma tête, si quelqu'un peut partager ses opinions ce serait génial.

Merci

Répondre

3

traduction ou cartographie est orthogonal, bien que quelque peu lié, à perdre couplage.

  • Si vous associez de type concret type béton la mise en correspondance est étroitement couplé
  • Si vous associez de type abstrait type béton ou l'inverse, le mappage est couplé de manière lâche

En d'autres termes, le couplage lâche est lié au concept programmation aux interfaces - pas à la cartographie.

Si les couches d'une application communiquent entre elles par des types de béton, elles sont étroitement couplées. Dans un tel cas, la superposition ne fournit pas beaucoup de valeur, et vous pourriez aussi bien avoir construit une application monolithique. D'autre part, si une couche communique avec d'autres couches via des interfaces, les couches seront faiblement couplées, mais le mappage est souvent nécessaire.

+0

Si vous mappez du type abstrait au type de béton ou inversement, le mappage est faiblement couplé. J'admets que c'est couplé de manière lâche du point de vue d'une interface, mais il peut encore être étroitement couplé aux champs de la table de la base de données? Par exemple, si vous supprimez une colonne dans une table, que se passe-t-il alors? Vous auriez besoin de changer l'interface et les mappings, aka, d'une certaine manière, le couplage? Multi-couche = multi-traductions et se propage tout le long des couches, la maintenance augmente, donc est-il encore faiblement couplé? – Joshscorp

+0

L'ajout ou la suppression de données (que ce soit dans la base de données ou en tant que membres sur des types .NET) doit être considéré comme un changement de contrat. Cela peut faire plus de mal dans un système faiblement couplé en raison des multiples endroits où vous devez implémenter ce changement, mais d'un autre côté, vous pouvez également vous isoler des changements dans les autres couches. Cela dépend de la raison pour laquelle vous introduisez le changement, mais ce n'est pas ce que nous comprenons normalement du concept de couplage lâche. –