Les Services et les Dépôts en DDD (C#)

Comment Services et Repositories se rapportent les uns aux autres en DDD? Je veux dire, j'ai lu sur des DDD pour les 2 derniers jours, et partout où je vais, il y a toujours un Service couche et il y a toujours un Repository couche. Comment les différencier ou se compléter les uns les autres?

De ce que j'ai lu, n'est-ce pas le Repository la couche responsable de la délégation des interactions entre l'application et les données?

Alors, quelle est la nécessité pour le Service couche si c'est pour mettre en œuvre les Repository pour interagir avec les données de toute façon, même si le Repository probablement déjà implémente les méthodes nécessaires pour le faire?

J'apprécierais quelques lumières sur le sujet.

P. S. Ne sais pas si cela va aider, mais je travaille avec une ASP.NET MVC 2 application dans laquelle je suis en train de mettre en œuvre le modèle de Référentiel. Je viens de terminer la mise en œuvre de l'Injection de Dépendance motif (pour la première fois)...

Mise à JOUR

Bon, avec donc beaucoup de réponses, je pense que je comprends ce qu'est la différence. Ainsi, à l'examen (corrigez-moi si je me trompe):

  • Un Repository couche interagit avec un objet de la base de données ou de l'ORM, IEmployeeRepository -> Employee.

  • Un Service couche encapsule plus de fonctions complexes sur les objets retournés à partir de Repositories, soit une ou plusieurs.

Donc, puis-je avoir une sous question. Est-il considéré comme une mauvaise pratique pour créer résumé objets à envoyer à mon point de vue? Par exemple, une AEmployee (A pour abstract parce que pour moi I signifie interface) qui contient des propriétés de Employee et X ou X?

En fait, un de plus subquestion. Si un Service couche peut être considéré comme "à l'écoute" pour un demande-t-il besoin d'être mis en œuvre avec une interface?

  • Je crois que les services peuvent regrouper plusieurs référentiels.
  • Il y a une sacrée différence entre le commun populaire et d'utilisation du Référentiel et du Service (l'utilisation trouvés dans de nombreux exemples, & tutoriels) et comment Domain Driven Design définit ces. Je crois qu'il est important de comprendre les différences.
  • est - il devrait y avoir un référentiel par agrégat de la racine, mais un service peut être (et sera) un travail sur plusieurs reposities, rendue possible par le motif d'unité de travail. et en passant, combien de fois puis une question comme cela sera demandé? il ya beaucoup de questions au sujet de ce sur un débordement de pile.
InformationsquelleAutor Gup3rSuR4c | 2010-11-11