Membaca literatur DDD saya datang dengan lapisan berikut:
Application
Dunia Orang Luar (Pengendali, Crons, dll)Application Services
(atau UseCases) - yang mengatur beberapa Layanan Domain atau Layanan Infrastruktur. Mereka dipanggil dariOutside World
. Mereka tahu apa yang harus dilakukanDomain Services
- yang berisi bagaimana hal-hal dilakukan (mengandalkan antarmuka repositori)
Pertanyaan : Apakah ada praktik terbaik bagaimana berkomunikasi antar lapisan?
Yang saya tahu: - Application services
harus mengembalikan "data yang diinginkan" untuk diekspos dan beberapa "keberhasilan" transaksi (peringatan, kesalahan, info) - Data yang Application Service
dikembalikan, harus dikumpulkan dari Domain Services
dan / atau dikumpulkan untuk dikumpulkan Infrastructure Services
.
Controller <-> Application Service <-> Domain Service
<-> Infrastructure Service
Ini adalah beberapa pemikiran ambigu saya:
Haruskah semua metode di
Application Service
memiliki DTO spesifik yang berisi "permintaan" sebagai parameter? SepertiAddItemToCardCommandDto
(yang merangkum semua data yang dibutuhkan). Bagaimana dengan generikResultObject
yang hanya memiliki beberapa metode sepertigetResult
danhasErrorrs
ataugetMessages
?Bagaimana seharusnya mengembalikan
DomainService
data dan kesalahan? Haruskah mereka mengembalikan kesalahan dengan pengecualian? Tampaknya aneh karena bagi saya Bussines Validation harus dipanggilDomainServices
karena mereka adalah bagian dari aturan bisnis.