Правильно ли построена архитектура (Aggregate — Repository — Service — Controller)?
Нужен совет по архитектуре приложения.
Есть сайт, к примеру, аггрегатор недвижимости. Для хранения сведений об объектах
я использую RealtyObject Aggregate, состоящий из RealtyObject Entity + RealtyImages Entity плюс какие-то ещё сущности. В этих сущностях лишь геттеры и сеттеры, больше ничего.
Всё, что касается операций чтения, сохранения свойств сущностей - лежит в RealtyObject Repository и RealtyImages Repository.
Действия с аггрегированным объектом RealtyObject Aggregate (вся бизнес-логика) соответственно размещаются в RealtyObject Service, с которым уже будет происходить взаимодействие из контроллера.
Хотелось бы знать, правильно ли я уловил концепцию построения подобных систем?
Агрегат - это сущность, в состав которой входят другие сущности. Однако будучи агрегатом, он не перестает быть сущностью, и имеет все свойства сущности. Делать для агрегата отдельный объект не нужно.
RealtyObjectService'a быть не должно, сервисы должны именоваться бизнес-кейсами, а не типами сущностей/агрегатов, с которыми работают. Вообще один сервис может работать сразу с несколькими сущностями и агрегатами.