2011-01-09 14 views
6

So che DTO è un oggetto di trasferimento dati e un BO è un oggetto business. Ma cosa significa in realtà? Quando dovrei scegliere uno rispetto all'altro? Da ciò che capisco, DTO è usato per trasferire dati e non ha logiche di business. Questo significa che un DTO non ha proprietà solo metodo (getter e setter)? Ma ha ancora le proprietà di una BO. Qualcuno può spiegare per favore? Grazie.Che cos'è un DTO e BO? Qual è la differenza?

+8

@Mitch Wheat: ho già detto quello che so. Vengo allo stackoverflow non perché non riesca a trovare risposte su Internet. Vengo qui perché ci sono esperti che capiscono bene l'argomento e rispondono alle domande in modo semplice e lucido. Potete PER FAVORE lasciare che (e altri) sappiate perché avete fatto questa domanda? – Sandbox

+0

@Sandbox : Ho fatto la domanda perché quando faccio una ricerca su internet per quei termini, ottengo le risposte corrette. –

+1

@Mitch Wheat: Questo è vero per la maggior parte delle domande su SO o sui relativi siti di scambio di stack. Troverete una risposta su alcuni blog o forum. E 'questa la prima volta su SO che qualcuno ha fatto una domanda, che non può essere cercata su internet? – Sandbox

risposta

11

DTO viene utilizzato per trasferire i dati tra livelli/livelli. A tale scopo non ha bisogno di alcun methos e talvolta non dovrebbe nemmeno avere alcun metodo - ad esempio quando DTO è esposto sul servizio web.

L'oggetto business è un oggetto intelligente che contiene dati e metodi che eseguono operazioni (modifica dati) su questo oggetto. Quando esponi BO al livello superiore, puoi chiamare i metodi pubblici dell'oggetto. A volte non lo vuoi e per questo motivo crei DTO che offre solo dati ma non metodi.

DTO non deve trasportare tutti i dati BO. Quando segui un rigoroso approccio DTO, crei DTO specifici per ogni operazione esposta sul tuo livello aziendale. Ad esempio se il tuo oggetto ha dati di controllo come CreatedBy, ModifiedBy, CreatedDate, ecc. E stai creando il metodo di aggiornamento, il DTO in entrata (con oggetto aggiornato) non ha bisogno di avere queste proprietà perché il livello superiore non può modificarle - solo la logica di business può .

+0

In questo modo le DTO sono SEMPRE utilizzate per comunicare dal livello BO al livello di accesso ai dati? – Sandbox

+0

Nessun DTO è un concetto generale che può essere utilizzato tra qualsiasi livello. L'utilizzo più comune di DTO è tra il livello Presentazione e Business. Un altro utilizzo comune è tra livelli (limite fisico). –

+0

Vedo che capisci .net (dalle tue risposte precedenti). Quindi, se sto utilizzando il pattern MVVM in WPF con un'architettura a 3 livelli, allora il mio DTO di VM è il mio? o userò VM solo per la visualizzazione e utilizzo DTO per trasferire dati da VM a modello e modello al mio servizio? – Sandbox

1

In genere, DTO ha dati statici relativi per quel momento prima che arrivi il livello, ma BO può mantenere dinamicamente lo stato e il valore del flag di flusso; e BO potrebbe anche essere autonomo per avere convalida o riorganizzazione o giudizio logico per alcune logiche di business; ma il cambiamento di DTO dipende dal cambiamento di dati del livello passato ... Tuttavia, le modifiche di BO hanno un ambito più ampio, ad esempio, dipende da un aggiornamento più dinamico con lo stato del flusso aziendale, dal cambiamento del flag, persino l'identità potrebbe essere modificati in tempo reale, questi supponiamo di essere catturati e fatti riflettere da BO, ad esempio, come il saldo da $ 200 a zero, o il saldo da $ 2000 a $ 5000, quindi l'identità/lo stato dell'affare/scambio cambierà ... questo è grande differenza tra DTO e BO.

Problemi correlati