Come utilizzare una classe DTO come proprietà nella corrispondente classe BO?

1

Stavo leggendo questo post del blog e mi è piaciuta l'idea di usare la classe DTO per un'entità e usarla come una proprietà nella corrispondente classe di oggetti di business in questo modo:

public class Person : BALBase
{
        public PersonDTO Data { get; set; }

Questo può anche eliminare la necessità di uno strumento di mappatura come AutoMapper (mappatura tra POCO e DTO). Sto pensando di usare questo concetto nella mia app. La mia app è stratificata usando assiemi diritti senza servizi web / chiamate REST / WCF.

Quali possono essere gli svantaggi dell'utilizzo di questo concetto?

    
posta Tony_Henrich 15.06.2014 - 10:43
fonte

2 risposte

3

Il principale svantaggio di questo metodo è che stai perdendo qualsiasi logica di business e convalida che il tuo oggetto business potrebbe applicare sui dati.

Che cosa fa la classe Person che PersonDTO non fa? Forse esegue convalide sui campi, quindi l'impostazione Person.Name su una stringa vuota viene catturata e viene restituito un errore. Esponendo direttamente PersonDTO mancherebbe quello.

Forse l'oggetto business garantisce che vengano mantenuti flussi di lavoro adeguati. Spostare una persona da un dipartimento all'altro potrebbe richiedere l'approvazione di un manager nel reparto di destinazione. Person potrebbe esporre un metodo MoveDepartment che incapsula questa logica del flusso di lavoro, mentre l'esposizione di PersonDTO potrebbe consentire a un chiamante di modificare PersonDTO.Department direttamente.

    
risposta data 15.06.2014 - 10:55
fonte
0

Uno dei problemi principali che vedo è che la dipendenza è il modo sbagliato. DTO dovrebbe dipendere dal tuo livello aziendale, non da altro. È molto più possibile modificare DTO piuttosto che modificare le regole aziendali.

Che cosa succede se si desidera disporre di un tipo di DTO diverso per servizi diversi? Cosa succede se si desidera utilizzare il livello aziendale direttamente nel servizio web? Limitare il tuo livello aziendale all'utilizzo di un DTO specifico renderà tutti questi casi più difficili da implementare.

    
risposta data 15.06.2014 - 11:03
fonte

Leggi altre domande sui tag