Domanda

Durante la creazione di un n-tier soluzione, non voglio esporre il mio business objects, ma utilizzare DTO invece di questo.Dall'altro lato, non voglio doppiamente definire gli oggetti e scrivere copia il codice per tutto il tempo.

Ora la mia idea sarebbe quella di scrivere DTOs che contiene tutti i campi necessari e proprietà, ma nessuna logica (solo stato).

Poi vorrei ricavare il mio business objects da quelli DTOs, estendendole con la mia logica di business, lavorando sulla DTO classi di base di proprietà.Questi oggetti anche essere oggetti persistenti nel ORM utilizzato (NHibernate).

Con questo approccio, il lato server, ho potuto lavorare su gli oggetti di business e passare direttamente al cliente (sono derivati, così giù-colabile).Non vorrei essere costretto a esporre la mia logica di business che modo e risparmiare un sacco di codice.

Pensi che l'approccio è sensibile?

Saluti,

Sebastian

È stato utile?

Soluzione

Si può prendere in considerazione quanto segue:

  

" ...,   perché mantenendo il DTO all'oscuro della   oggetti di dominio vi permette di riutilizzare   il DTO in contesti differenti.   Allo stesso modo, non si vuole il dominio   oggetti di conoscere il DTO perché   che può significare che cambiare il DTO   richiederebbe modificare il codice in   logica di dominio , che porterebbe ad un   manutenzione incubo.

     

La soluzione migliore è quella di utilizzare il modello Assembler , che crea DTOs da oggetti di business e viceversa. Assembler è un'istanza specializzata della Mapper modello citato anche in Patterns of Enterprise Application Architecture .... "

Pattern e pratica: Trasferimento di dati oggetto

Inoltre, non ho usato da solo, ma si potrebbe voler controllare automapper come bene.

Altri suggerimenti

Suona ragionevole per me.In Linq to SQL, business objects sono derivati dal DTO da l'uso di classi parziali.

"Poi vorrei ricavare i miei oggetti di business da quelle DTOs" avere in mente che DTOs potrebbero essere diversi da BO potrebbero contenere oggetti di 2 o 3 BO

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