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