сервис инжектят репозитории - является ли это правильным?
если через интерфейс, задефайненый в блл слое, то не вижу проблемы алсо, что за книга?
так ты ее уже читал, Learning Domain-Driven Design By Vlad Khononov :D просто немного удивился когда такое увидел
II раздел, 5 или 6 глава
Тоже такое видел в лекции Получается, что предметный слой загрязняем техническими деталями. Мб с избытком такого, сложнее работать будет. И еще мокать придется при тестах
Либо это не домейн сервис
вот вот, и возникает непомание чем этот домейн сервис будет отличаться от application service?
нет, не загрязняется, ты эти правила можешь описать интерфейсом и мокать их. Реализация интерфейса может не содержать ветвлений и покрываться приемочными тестами
домен сервис - бизнес логика которая не помещается в агрегат(взаимодействие с множеством агрегатов) апликейшн сервис - не бизнес логика
мне кажется делать разделение на "бизнес логика и не бизнес логика" это может вводить людей в ступор. Проще говорить что есть "бизнес правила/ограничения" и в этом случае доменные сервисы могут их обслуживать, а application сервисы это оркестрация всем этим. Ключевое - в application слое нет if-ов и много зависимостей. Все ифы делигируются бизнес слою.
здесь про инжект интерфейсов репозиториев и сервисов из инфраструктуры ни слова. получается домейн сервис может все это делать? после успешной транзакции в агрегате, вызывать IAlertManager.sendTaskCreatedAlert(..)? или он только репозитории может юзать, которые определены в блл слое?
IAlertManager.sendTaskCreatedAlert - логика? думаю нет, швыряй его в аппликейшн но вот допустим тебе надо сделать проверку на уникальность имейла (задействуем много агрегатов), то вот это мы кидаем в домен сервис, интерфейс для репозитория делаем тоже в блл
что делать если вызов sendTaskCreatedAlert зависит от действий/стейта в агрегатах? домейн сервис возвращает апликейшену ответ "нужно ли отправить алерт и кому" и тот делает всю работу?
Похоже на доменное событие, которое можно отловить из домена и диспетчеризировать в аппликейшене
а почему бы не и ивент и диспатчер
Обсуждают сегодня