Membaca literatur DDD saya datang dengan lapisan berikut:
ApplicationDunia 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 servicesharus mengembalikan "data yang diinginkan" untuk diekspos dan beberapa "keberhasilan" transaksi (peringatan, kesalahan, info) - Data yang Application Servicedikembalikan, harus dikumpulkan dari Domain Servicesdan / atau dikumpulkan untuk dikumpulkan Infrastructure Services.
Controller <-> Application Service <-> Domain Service
<-> Infrastructure Service
Ini adalah beberapa pemikiran ambigu saya:
Haruskah semua metode di
Application Servicememiliki DTO spesifik yang berisi "permintaan" sebagai parameter? SepertiAddItemToCardCommandDto(yang merangkum semua data yang dibutuhkan). Bagaimana dengan generikResultObjectyang hanya memiliki beberapa metode sepertigetResultdanhasErrorrsataugetMessages?Bagaimana seharusnya mengembalikan
DomainServicedata dan kesalahan? Haruskah mereka mengembalikan kesalahan dengan pengecualian? Tampaknya aneh karena bagi saya Bussines Validation harus dipanggilDomainServiceskarena mereka adalah bagian dari aturan bisnis.