DDD e filtraggio

4

Sto sviluppando un'app in ddd maner. Quindi ho un modello di dominio complesso. Supponiamo di avere un oggetto tariffa e compagnia aerea. Ogni compagnia aerea dovrebbe contenere diverse o molte più tariffe.

La mia interfaccia utente dovrebbe rappresentare il modello (solo una piccola parte del modello complesso) come un elenco di compagnie aeree, quando l'utente seleziona la compagnia aerea, devo mostrare l'elenco delle tariffe. L'utente può filtrare le tariffe (in base al tempo di viaggio, costo, ecc.).

Qual è il posto giusto per filtrare le tariffe e le compagnie aeree?

Suppongo che dovrei farlo in ViewModel. Ad esempio: il mio modello di dominio è stato completato con Service Layer - > L'interfaccia utente funziona con ViewModel - > ViewModel ottiene i dati dal livello di servizio filtrandolo e creando oggetti DTO per l'interfaccia utente. O mi sbaglio?

    
posta tikhop 20.12.2012 - 14:17
fonte

2 risposte

1

Se esiste una notevole quantità di dati da filtrare, allora considera di passare la query "filtro" attraverso lo stack in modo che si tratti di una query del database. Ciò minimizzerà la quantità di dati che passano tra il tuo database (supponendo che tu ne abbia uno) e il tuo codice.

D'altra parte, se hai bisogno di filtrare i dati che sono già in memoria e il tuo codice è tutto in un unico processo, puoi farlo in qualsiasi momento: dopo tutto passerai solo dei puntatori. Tuttavia, se si sta prendendo in considerazione il refactoring del livello di servizio in un servizio effettivo, eseguito separatamente dal codice dell'interfaccia utente, si desidera che il filtro si trovi nel livello di servizio in modo da poter ridurre nuovamente il traffico di dati tra i limiti dei livelli.

    
risposta data 08.06.2013 - 04:41
fonte
0

Generalmente DDD e CQRS vanno di pari passo, quindi questa sarebbe la porzione di query di CQRS. Il modo in cui ho sempre compreso CQRS e DDD insieme è che il servizio applicativo deve avere query mirate. Se stai filtrando a livello di interfaccia utente (sul lato iniziale, non sul lato client), sembrerebbe che si stia rompendo questa separazione di preoccupazioni mentre stai facendo la logica aziendale nell'interfaccia utente. Idealmente il filtraggio dovrebbe essere una query molto semplice. Ma come sempre DDD e CQRS sono solo strumenti, fai ciò che funziona.

    
risposta data 25.06.2013 - 18:59
fonte