La nostra azienda lavora con camionisti che effettuano ritiri / consegne di container. La posizione dei contenitori deve essere monitorata.
I driver utilizzano i dispositivi mobili per generare un "DriverReport" (un registro dei loro luoghi di viaggio, orari, ritiro / ritiro container, ecc.). Attualmente funziona con un design prevalentemente CRUD.
Volevamo mantenere un buon SoC così abbiamo creato due servizi:
- DriverService
- InventoryService
Abbiamo avuto che DriverService ha una dipendenza da InventoryService. Quando è stato inserito un nuovo DriverReport, genererebbe DTO (basato sui dati dei report) che potrebbero essere inviati a InventoryService.
Non stiamo ancora utilizzando CQRS, ma stiamo valutando di passare ad esso.
Sto facendo fatica a capire la relazione tra i servizi, i comandi e BLL. Mi sembra di avere molte domande.
Chi sarebbe responsabile della chiamata al servizio di inventario?
Sarebbe un buon design per un NewTripCommandHandler per generare e inviare un comando UpdateContainerInventory?
Oppure, l'aggiornamento dell'inventario per un nuovo viaggio può essere considerato una logica aziendale? In caso affermativo, un'entità di dominio per Trip genera e invia un comando UpdateContainer?
Oppure, se il client mobile genera sia i comandi specifici di viaggio che quelli di inventario da inviare al servizio appropriato?
Avrebbe più senso prendere le parti specifiche dell'inventario DriverReport e unirle nel DriverService (quindi la dipendenza è interrotta)? E 'ancora un buon SoC? Se lo facessimo, a quale livello potremmo iniziare a pensare all'inventario? L'aggiornamento dell'inventario diventerebbe semplicemente un problema di repository DB, o dovrebbero esserci ancora comandi specifici per l'inventario e / o logica aziendale?
Mi sto perdendo nei dettagli e sembra che più leggo sugli argomenti, più mi confondo.