Ho un modello di dominio ordinato che semplifica la comunicazione con un servizio Web esterno. I nuovi requisiti hanno reso l'interfaccia del servizio Web esterna disordinata e ora devo raccogliere dati da più punti nel mio modello. Un DTO è appropriato per contenere tutti i dati necessari?
Ho un'interfaccia che si occupa della ricerca di alcuni modelli di dominio. L'implementazione concreta che ne deriva va a un servizio Web esterno per i risultati.
interface IConsentSearch // only one method
+Search(Customer) : IList<Consent>
class Customer
+various properties
Il mio modello di dominio è, ovviamente, molto più complesso, ma questo è il succo di ciò.
Ora ho alcuni nuovi requisiti che ci consentono di cercare in order id
oltre alle proprietà di Customer
.
Nel mio modello di dominio interno, orderId
ha una sua piccola posizione da qualche parte (non parte di Customer
). Il problema è che l'interfaccia del servizio web esterno ha un'idea completamente diversa di dove orderId
è.
Nota : non è una o entrambe le situazioni: tutto ciò che Customer
deve offrire è obbligatorio per la ricerca: order id
è solo un criterio aggiuntivo.
Dovrò cambiare Search()
signature e ho pensato di creare un nuovo DTO nel livello di servizio dell'applicazione chiamato ConsentSearchDTO
. Il nuovo DTO servirebbe uno scopo: combinare dati e modelli che sono ora sparsi nel mio modello di dominio e necessari per interrogare il servizio web esterno:
interface IConsentSearch // still only one method
+Search(ConsentSearchDTO) : IList<Consent>
class Customer // still the same
+various properties
class ConsentSearchDTO
+Customer : Customer
+OrderId : int
Le mie domande:
- La percentuale di% co_de ha senso?
- Va bene creare un DTO che faccia riferimento alle classi del modello di dominio (
ConsentSearchDTO
) o dovrei creare una struttura completamente nuova che imita il modello di dominio originale? Sembra molto lavoro e non mi porta alcun valore aggiuntivo.