Как 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
можно считать "настроенным" для приложения, его нужно реализовать с помощью интерфейса?