Как Services и Repositories связаны друг с другом в DDD? Я имею в виду, что за последние 2 дня я читал DDD, и везде, куда бы я ни пошел, всегда есть слой Service и всегда есть слой Repository. Как они дифференцируют или дополняют друг друга?
Из того, что я прочитал, не является ли Repository уровнем, ответственным за делегирование взаимодействия между приложением и данными?
Итак, что нужно для слоя Service, если он должен реализовать Repository для взаимодействия с данными в любом случае, даже если Repository, вероятно, уже реализует методы, необходимые для этого?
Я хотел бы получить некоторое просвещение по этому вопросу.
P.S. Не знаю, поможет ли это кому-либо, но я работаю с приложением ASP.NET MVC 2, в котором я пытаюсь реализовать шаблон репозитория. Я только что закончил реализацию шаблона Injection Dependency (впервые в истории)...
UPDATE
Хорошо, с таким количеством ответов, я думаю, я понимаю, в чем разница. Итак, просмотрите (исправьте меня, если я ошибаюсь):
-
Уровень
Repositoryвзаимодействует только с одним объектом из базы данных или ORM,IEmployeeRepository→Employee. -
Уровень A
Serviceинкапсулирует более сложные функции для объектов, возвращаемых изRepositories, одного или нескольких.
Итак, у меня есть дополнительный вопрос. Является ли плохой практикой создание абстрактных объектов для отправки в мои представления? Например, AEmployee (A для abstract, потому что для меня I означает interface), который содержит свойства от Employee и X или X?
Собственно, еще одно подзапрос. Если слой Service можно считать "настроенным" для приложения, его нужно реализовать с помощью интерфейса?