web-dev-qa-db-fra.com

Entités Logic Business et Accès aux données Entités de la couche

Je pense comment structurer un projet. Je me demande s'il s'agit d'une bonne pratique d'utiliser différentes classes d'entité entre le BL et DAL afin de découpler ces couches.

J'ai travaillé sur des projets où les classes d'entité où dans un projet/paquet séparé. Ensuite, BL et DAL ont utilisé les mêmes entités.

Mais je peux imaginer qu'une meilleure approche consiste à définir une classe d'entité pour chaque couche et son assemblage. Quels sont les avantages objectifs et les inconvénients d'une telle approche?

3
user9923760

Bl, entités et dal

Le but du BL est de mettre en œuvre la logique de domaine qui fonctionnent avec des entités de domaine. La définition de ces entités est axée sur les entreprises.

Le but de la DAL est alors d'organiser la persistance des entités de domaine. L'idée est de cacher les couches supérieures les détails laides de l'accès des données et de la base de données. Si c'est bien fait, vous pouvez modifier la base de données sous la surface et laisser toujours les couches supérieures inchangées.

Sans surprise, le domaine entités sont partagées sur les deux couches : BL a besoin d'eux pour effectuer des activités de domaine, mais DAL a besoin d'eux pour organiser leur persistance.

Découpez BL et DAL?

Les composants de découplage sont généralement une très bonne idée. Cependant, les couches ne sont pas des composants indépendants. Les couches sont des groupements logiques de classes connexes.

En fait, vous pourriez aussi bien redessiner votre diagramme de couche et imaginer une couche entre BL et DAL qui contient les entités. Et tout à coup, les couches sembleraient propres et découplées.

Quelles sont les alternatives?

Vous proposez une alternative à utiliser deux types différents d'entités dans les différentes couches. Donc, vous auriez des entités de domaine appropriées dans le BL. Et vous auriez des entités d'accès aux données intermédiaires dans le DAL.

Maintenant, imaginez que vous impliqueriez ce schéma parfait. Comment feriez-vous alors le lien entre l'entité BL et l'entité dal? D'une manière ou d'une autre, elles devraient se connaître pour synchroniser les données. Donc, vous finiriez à avoir un fort couplage entre les couches de toute façon. C'est juste que ce serait moins évident.

2
Christophe

Définir des entités dans une classe et utiliser la même entité à BL et DAL. Cette conception enregistre votre temps et votre bogue qui venaient de changer d'entités de temps en temps.

0
Mojtaba Tajik

Si le projet est simple et utilise une source de données unique, il est logique d'utiliser les mêmes classes d'entité où la logique commerciale et la couche d'accès aux données utilisent les mêmes classes d'entité. Si vous avez affaire à plusieurs sources de données et que la logique commerciale traite de multiples sources de données et de la gestion de nombreux types de validation et de transfert de données; Vous pouvez utiliser des objets distincts I.e. Objets de transfert de données pour la couche d'entreprise. Cela donne une flexibilité pour donner une simple Dto à la couche de présentation dans un seul appel.

0
Pradip Karki