Speravo solo che qualcuno fosse in grado di rispondere ad alcune mie domande sulla corretta progettazione di DTO e modelli di dominio. Attualmente sto lavorando a un progetto che prevede l'utilizzo di un'API SOAP.
Dato che lavoriamo con SOAP, abbiamo il vantaggio di generare un numero di oggetti (DTO) usando il file WSDL fornito. Successivamente ho anche creato una serie di comandi che ci permettono di incapsulare meglio l'intento di ogni richiesta e di semplificare la nostra interfaccia verso l'API.
Ogni gestore di comando ha un oggetto "comando" associato che memorizza tutti i dati necessari per completare la richiesta con successo.
In realtà ho tre domande riguardo questo approccio:
1) È inusuale chiamare direttamente i gestori di comandi, sostituendo così il Bus di comando come nostro invocatore. Ovviamente perderemmo l'abilità (almeno in queste istanze selezionate) di passare i nostri comandi in un'applicazione di accodamento che ci consentirebbe di eseguire il comando in un ordine non sequenziale.
Tuttavia, ho identificato alcuni casi in cui dovremmo effettivamente analizzare i dati di risposta dell'API su runtime. Potrebbe essere interpretato come un potenziale problema nella progettazione della nostra applicazione?
2) Attualmente stiamo eseguendo la convalida sui dati della richiesta prima di passarla nei nostri oggetti di comando immutabili. Tuttavia, potrebbero esserci alcuni casi in cui abbiamo bisogno di dati di analisi dal DB / CLI prima di inizializzare i nostri comandi.
Di conseguenza, ho considerato di inserire la nostra logica di validazione negli oggetti comando stessi. Se la convalida fallisce, può essere generata un'eccezione. Questo sembra un approccio ragionevole o sto di nuovo violando alcuni principi di progettazione?
3) Questo può sembrare sciocco, ma qual è esattamente la differenza tra un oggetto dominio e un DTO. Ho sentito gli oggetti comando che vengono definiti come DTO ma sembrano appartenere al livello dominio (a meno che non mi sbagli).
L'oggetto comando potrebbe essere descritto in modo più accurato come un DTO o un modello di dominio?
Grazie ancora. Apprezzo il feedback.