Domanda

Qual è il modo migliore per attuare DTOS?

La mia comprensione è che sono un modo per trasferire i dati tra gli oggetti. Ad esempio, in un'applicazione ASP.Net, si potrebbe utilizzare un DTO per inviare i dati dal codice sottostante alla componente livello di logica di business.

Che dire di altre opzioni, come solo l'invio dei dati come parametri di metodo? (Questo sarebbe più facile asces wher c'è meno dati da inviare?)

Che dire di una classe statica che solo contiene i dati, che può essere referenziato da altri oggetti (una sorta di classe di memorizzazione dei dati asembly globale)? (Fa questa rottura incapsulamento troppo?)

Che dire di un singolo generica DTO utilizzato per ogni trasferimento? Può essere un po 'più problemi da usare, ma riduce il numero di classi necessarie per lavorare con (riduce l'ingombro oggetto).

Grazie per condividere i tuoi pensieri.

È stato utile?

Soluzione 6

Grazie per tutte le idee utili ...

Una sintesi + mio prendere su questo:

- Se c'è una piccola quantità di dati a muoversi e non troppi posti per spostarlo, parametri regolari possono bastare

-. Se c'è un sacco di dati e / o molti oggetti per spostarlo, un oggetto appositamente creato può essere più semplice (oggetto DTO)

- Un oggetto dati globali che può essere referenziato (piuttosto che passava) di vari oggetti sembrerebbe essere di buon occhio ... Tuttavia, mi chiedo se non c'è a volte un posto di tutto all'interno di un particolare sotto-sistema ? È un modo per ridurre la quantità di trasmissione dei dati. Non spingere i limiti della "buona incapsulamento", ma in casi specifici all'interno di strati specifici, forse potrebbe aggiungere la semplicità di un assemply particluar di classi. Così si perderebbe a livello di classe di incapsulamento, ma potrebbe avere ancora a livello di assemblaggio incapsulamento.

Altri suggerimenti

Ho usato di DTO a:

  • i dati passano tra l'interfaccia utente e il servizio di livello di un'applicazione a 3 livelli di serie.
  • Dati passare come parametri di metodo per incapsulare un gran numero (5+) di parametri.

L' 'uno DTO per domarli tutti' approccio potrebbe ottenere disordinato, migliore da fare è di andare con specifica DTO per ogni gruppo funzione / funzione, avendo cura di assegnare loro un nome in modo che siano facili da abbinare tra le caratteristiche che stanno utilizzato in.

Non ho mai visto statica DTO nel modo in cui si parla e ci si esita a creare single DTO come si descrive.

Lo tengo semplice e traccio una classe DTO ad una tabella db. Sono leggeri in modo che io possa inviare ovunque, anche oltre il filo.

Vorrei che potrebbe essere semplice. Anche se DTO avuto origine a causa di rete livelli di distribuzione di un sistema non ci può essere intero carico di problemi se oggetti di dominio vengono restituiti per visualizzare i livelli. Qui ci sono alcuni di loro:

1.By esponendo oggetti dominio di visualizzare strato, Visualizzazioni diventano consapevoli della struttura degli oggetti di dominio, che permette vista fa alcune ipotesi su come gli oggetti correlate sono disponibili. Per esempio, se un oggetto di dominio "Persona" è stata retunrned al fine di cui è "vincolato" e su qualche altro punto di vista, "Indirizzo" di persona è di essere vincolato, non ci sarebbe una tendenza per livello di applicazione per utilizzare una semantica come person.getAddresse (), che woukd fallire in quanto a quel punto oggetto di dominio Indirizzo potrebbe non essere stato caricato al punto. In sostanza, con oggetti di dominio diventa disponibile per visualizzare i livelli, viste possono sempre fare ipotesi su come i dati vengono messi a disposizione.

2.) Quando gli oggetti di dominio sono tenuti a vista (più in thick client), ci sarà alwyas una tendenza per Vista logica centrica a insinuarsi all'interno di questi oggetti che li rende logicamente corrotti.

In sostanza dalla mia esperienza ho visto che, per rendere di dominio oggetti a disposizione Visualizzazioni creare problemi di architettura, ma ci sono problemi con l'uso di di DTO anche perché l'uso di DTO crea lavoro in più in termini di creazione di assemblatori (DTO per oggetti di dominio e retromarcia) , la proliferazione di oggetti analoghi come oggetto di dominio paziente, DTO del paziente e fagioli forse paziente legato a visualizzare.

Chiaramente non ci sono risposte giuste per questo specialmente in un sistema client di spessore.

Ho preso in prestito questa risposta breve e non completa, ma fedele al DTO cliché da:
http://www.theserverside.com/discussions/thread.tss? ID_Thread = 32389 # 160505

Credo che sia abbastanza comune l'uso di DataSet / DataTable come "uno DTO per domarli tutti". E 'facile caricarli dal database, e persistono i valori indietro, e possono essere facilmente serializzato.

Mi sarebbe sicuramente dire che sono più problemi per l'uso. Fanno fornire tutte le tubature, ma la programmazione contro di loro è un dolore (un sacco di colata, controlli nulli, archi magici, ecc). Sarebbe interessante vedere un buon set di metodi di estensione per rendere il lavoro con loro un po 'più "naturale".

DTOs vengono utilizzati per inviare dati attraverso il cavo, non tra oggetti. Dai un'occhiata a questo messaggio: POCO vs DTO

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top