Nous pouvons avoir ces deux approches pour envoyer des données à la couche d'accès aux données ou à toute autre source:
utilisation: p> 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 em>. P> deuxième approche forte>:
Garder l'ajout / supprimer / obtenir etc dans user.cs uniquement: p> utilisation: p> 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 p> Quelle approche est la meilleure? p> li>
Quand décidez lequel de la deuxième approche ci-dessus, nous devons opter? p> li>
si je dois ajouter d'autres méthodes aussi comme FindAlutusers em>,
FindUserByuserid em>, deleteuserbyuserid em> quelle approche dois-je aller? p> li>
ol> p>
3 Réponses :
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. P>
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? P>
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) P >
SO RÉPONSES: P>
+1 Juste pour ajouter à cela - L'utilisation du motif de référentiel comporte beaucoup plus de clarté - le référentiel ajoute i> utilisateurs, les utilisateurs ne ajoutez i> eux-mêmes.
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). p>
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. P >
À la fin, comme je l'ai dit que chaque approche sert à des fins, sachez que votre objectif avant de vous rendre au travail. P>
acclamations. P>
Si vous suivez Directives de DDD , alors les entités ne doivent pas avoir de dépendance à Infrastructure: p>
1ère loi de Nikola de CIO STRUT> P>
Stocker dans les services des conteneurs de la COI. Ne stockez aucune entité. P> blockQuote>
Raison: En incluant la logique d'infrastructure dans votre entité, vous vous éloignez du principe de la responsabilité unique em>. Voir Mark Seepann's Explication . P>
Le problème avec votre deuxième approche est que
L'entité code> a une dépendance sur l'infrastructure. P>