Beim Lesen der DDD-Literatur habe ich mir folgende Ebenen ausgedacht:
ApplicationOutsider World (Controller, Crons usw.)Application Services(oder UseCases) - Orchestriert mehrere Domänendienste oder Infrastrukturdienste. Sie werden von angerufenOutside World. Sie wissen, was zu tun istDomain Services- die enthält, wie die Dinge gemacht werden (basierend auf Repository-Schnittstellen)
Frage : Gibt es Best Practices für die Kommunikation zwischen Ebenen?
Was ich weiß: - Application servicessollte "gesuchte Daten" zurückgeben, die offengelegt werden sollen, und einen Teil des "Erfolgs" der Transaktion (Warnungen, Fehler, Infos) - Die Daten, aus denen eine Application ServiceRückgabe stammt, sollten gesammelt Domain Servicesund / oder Infrastructure Serviceszusammengestellt werden.
Controller <-> Application Service <-> Domain Service
<-> Infrastructure Service
Dies sind einige meiner zweideutigen Gedanken:
Sollten alle Methoden
Application Serviceein bestimmtes DTO haben, das die "Anfrage" als Parameter enthält? WieAddItemToCardCommandDto(das hat alle benötigten Daten gekapselt). Wie wäre es mit einem GenerikumResultObject, das nur ein paar Methoden wiegetResultundhasErrorrsoder hatgetMessages?Wie sollen
DomainServiceDaten und Fehler zurückgegeben werden? Sollten sie ausnahmsweise Fehler zurückgeben? Das scheint seltsam, weil für mich die Bussines Validation aufgerufen werden sollte,DomainServicesda sie Teil der Geschäftsregeln sind.