A volte quando si lavora su applicazioni, specialmente quando si cerca di seguire i modelli OOD e DDD appropriati, si finisce con classi di dominio come Customer
. Quindi abbiamo un repository che caricherà questo oggetto, e tutto è bello e pulito.Esiste un modello DDD comune per gestire il sotto carico di oggetti dominio?
Quindi l'applicazione diventa più complessa e iniziamo ad ottimizzare le prestazioni. Spesso ci troviamo in situazioni in cui non è necessario caricare, ad esempio, un elenco di oggetti interi Customer
, ma forse solo ID e nomi o un piccolo sottoinsieme di proprietà (ad esempio per visualizzare in una griglia)
Soluzioni che ho visto spesso includono:
Under carico oggetti di dominio, in modo sostanzialmente ci sarebbe ancora usare
Customer
classe, ma vorremmo utilizzare il metodo repository separato per caricare quelli, e che il metodo repository saremmo caricare dal database solo i campi obbligatori e popolare le proprietà corrispondenti negli oggetti. I restanti campiCustomer
rimarranno ai valori predefiniti. Questa è una soluzione semplice, ma può portare a molti errori se lo sviluppatore (o il codice esistente) si aspetta che alcune proprietà vengano caricate.Purpose-classing dove creiamo classi come
CustomerIdName
,CustomerInfo
,CustomerHeader
che contengono solo le proprietà di cui abbiamo bisogno. Questo approccio potrebbe creare un gran numero di classi, ma con un'attenta sottoclasse è praticabile. Sembra che tolga comunque il concetto di linguaggio di dominio ubiquitario.
Quindi c'è qualche convenzione generalmente concordata per gestire quelli nel mondo DDD? Ho provato a google questo, ma non sono riuscito a trovare nulla di autorevole.
O forse è solo una nota limitazione del classico approccio DDD e CQRS o altri approcci sarebbe meglio in quegli scenari?
Grazie, la risposta a cui ti sei collegato è esattamente lo stesso problema che sto affrontando. Dovrei pensarci un po 'di più, ma il concetto di aggirare il modello di dominio per determinate domande di applicazione è una soluzione molto interessante. –
Vedi anche: [Lazy loading is design smell] (https://books.google.com/books?id=9ebGBwAAQBAJ&pg=PA507#v=onepage&q&f=false) – Ritesh