2009-05-05 19 views
5

Spesso è necessario che un oggetto dominio venga visualizzato in vari modi sull'interfaccia utente; elenchi, risultati di ricerca, visualizzazione e modifica di pagine, nonché di intestazioni, piè di pagina e popup. In genere esistono diverse "viste" dell'oggetto dominio, ognuna con campi diversi visualizzati.POCO vs DTO: Va bene idratare parzialmente un oggetto dominio?

La maggior parte dei consigli sembra essere quella di utilizzare un DTO per ottenere i dati quando si richiede un sottoinsieme o un superset. C'è un sovraccarico nel mantenimento dei DTO. È un cattivo approccio per riempire semplicemente le proprietà dell'oggetto dominio richiesto per ogni scenario. Ad esempio, è possibile utilizzare un profilo per indicare quali proprietà devono essere incluse, ad esempio:

service.GetDomainObjects (int listID, Profile.ListProfile); service.GetDomainObjects (stringa searchParam, Profile.SearchProfile);

risposta

3

Per me, in che cosa consiste il punto in cui si desidera che l'overhead sia, si disporrà di un insieme di classi diverse per rappresentare i propri DTO o si disporrà di un insieme di metodi che restituiscono ciascuno stesso oggetto di dominio ma con campi diversi che sono "idratati".

Un paio di domande avrei chiesto di contribuire a rendere la decisione sono:

  • qual è l'overhead nel idratando l'intero oggetto? La complessità aggiunta (di DTO o oggetti parzialmente idratati) è davvero utile?
  • qualcun altro sta usando il tuo codice? Non devi confondere le persone con oggetti idratati in modo paritetico, le DTO potrebbero essere più chiare quando le persone vengono a mantenere il tuo codice.

Ho una leggera preferenza personale per DTO poiché ritengo che la manutenzione a lungo termine del sistema sarà più semplice. Se sei una one man band, o questa è un'app one-off-away, posso assolutamente capire di non voler introdurre un sacco di classi extra che ingombreranno il tuo codice.