¿Cómo se relacionan Services
y Repositories
entre sí en DDD? Quiero decir, he estado leyendo sobre DDD durante los últimos 2 días y en todos lados, siempre hay una capa Service
y siempre hay una capa Repository
. ¿Cómo se diferencian o se complementan?Servicios y repositorios en DDD (C#)
Por lo que he leído, ¿no es Repository
la capa responsable de delegar las interacciones entre la aplicación y los datos?
Así que, ¿cuál es la necesidad de que la capa Service
si se tiene que poner en práctica el Repository
para interactuar con los datos de todos modos a pesar de que la Repository
probablemente ya implementa los métodos necesarios para hacerlo?
Agradeceré algunas aclaraciones sobre el tema.
P.S. No sé si esto ayudará, pero estoy trabajando con una aplicación ASP.NET MVC 2 en la que estoy tratando de implementar el patrón Repositorio. Acabo de terminar la ejecución del patrón de inyección de dependencia (por primera vez en la historia) ...
ACTUALIZACIÓN
bien, con tantas respuestas, creo que entiendo cuál es la diferencia. Por lo tanto, para revisar (corríjanme si me equivoco):
Una capa
Repository
interactúa sólo con un único objeto fuera de la base de datos o el ORM,IEmployeeRepository
->Employee
.A
Service
capa encapsula la funcionalidad más compleja en los objetos devueltos desdeRepositories
, ya sea uno o varios.
Entonces, entonces tengo una pregunta secundaria. ¿Se considera una mala práctica crear objetos abstractos para enviar a mis puntos de vista? Por ejemplo, un AEmployee
(A
para abstract
porque para mí I
significa interface
) que contiene propiedades de Employee
y X
o X
?
En realidad, una sub-demanda más. Si una capa Service
se puede considerar "sintonizada" para una aplicación, ¿necesita implementarse con una interfaz?
Creo que los servicios pueden agregar varios repositorios. –
Existe una gran discrepancia entre el uso común/popular de Repository y Service (el uso que se encuentra en muchos ejemplos y tutoriales) y cómo Domain Driven Design los define. Creo que es importante entender las diferencias. –
@Sergey tiene razón: debe haber un repositorio por raíz agregada, pero un servicio puede (y funcionará) en múltiples reposiciones, hecho posible por el patrón de la unidad de trabajo. y, por cierto, ¿cuántas veces se puede hacer una pregunta como esta? hay muchas preguntas sobre esto en el desbordamiento de pila. – RPM1984