7
votes

Motif de référentiel VS DTO Motif Approche

Nous pouvons avoir ces deux approches pour envoyer des données à la couche d'accès aux données ou à toute autre source:

approche 1 : Manière du référentiel: xxx

utilisation: xxx

ci-dessus, vous avez vu que j'ai gardé l'utilisateur < / em> classe simple. Il ne s'agit pas de comportement. Le comportement est ajouté dans une classe distincte userpository .

deuxième approche : Garder l'ajout / supprimer / obtenir etc dans user.cs uniquement: xxx

utilisation: xxx

ci-dessus j'ai gardé le comportement en user.cs seulement. Les deux approches permettent d'ajouter, de supprimer ,c. L'utilisateur. Pouvez-vous me laisser savoir

  1. Quelle approche est la meilleure?

  2. Quand décidez lequel de la deuxième approche ci-dessus, nous devons opter?

  3. si je dois ajouter d'autres méthodes aussi comme FindAlutusers , FindUserByuserid , deleteuserbyuserid quelle approche dois-je aller?


0 commentaires

3 Réponses :


11
votes

La première approche est bien meilleure que vous séparez les préoccupations, c'est-à-dire l'utilisateur de l'entité de domaine et la persistance à la base de données.

L'une des choses les plus importantes qui se parlent souvent dans le design axé sur le domaine est la "ignorance de persistance" voir Quels sont les avantages de l'ignorance de la persistance?

En utilisant le motif de référentiel, la façon dont vous sauvegardez / obtenez votre entité est conservée hors du code d'entité, c'est-à-dire que votre domaine la maintien au nettoyant et dans l'absence d'ignorance de la persistance (ou d'aller de loin vers elle quand même)

SO RÉPONSES:

  1. L'approche du référentiel est beaucoup mieux
  2. Allez toujours pour l'option 1
  3. Ajoutez ces méthodes à la classe de référentiel

1 commentaires

+1 Juste pour ajouter à cela - L'utilisation du motif de référentiel comporte beaucoup plus de clarté - le référentiel ajoute utilisateurs, les utilisateurs ne ajoutez eux-mêmes.



1
votes

Cela dépend strictement du travail que vous devez faire et de la taille de votre application. Si vous souhaitez que quelque chose soit développé rapidement et moins évolutif, vous n'avez pas besoin d'utiliser une architecture de type N-TIER (je veux dire séparer vos interactions de données sur votre couche d'accès à vos données).

Toutefois, si vous recherchez quelque chose qui doit être hautement évolutif, modifiable, modifiable et sachez que cela obtiendra des fonctionnalités futures, vous devez donc séparer vos consoissages pour faciliter votre travail plus longtemps.

À la fin, comme je l'ai dit que chaque approche sert à des fins, sachez que votre objectif avant de vous rendre au travail.

acclamations.


0 commentaires

0
votes

Si vous suivez Directives de DDD , alors les entités ne doivent pas avoir de dépendance à Infrastructure:

1ère loi de Nikola de CIO

Stocker dans les services des conteneurs de la COI. Ne stockez aucune entité.

Raison: En incluant la logique d'infrastructure dans votre entité, vous vous éloignez du principe de la responsabilité unique . Voir Mark Seepann's Explication .

Le problème avec votre deuxième approche est que L'entité a une dépendance sur l'infrastructure.


0 commentaires