Assembler vs Entity Translator ed Entities vs DTO

3

Speravo che qualcuno potesse spiegare la differenza esatta tra un assemblatore e un traduttore di entità.

Martin Fowler descrive Assembler come una sorta di Mapper (?) che converte DTO in oggetti Dominio e viceversa.

When you're working with a remote interface, such as Remote Facade (388), each call to it is expensive. As a result you need to reduce the number of calls, and that means that you need to transfer more data with each call. One way to do this is to use lots of parameters. However, this is often awkward to program - indeed, it's often impossible with languages such as Java that return only a single value.

The solution is to create a Data Transfer Object that can hold all the data for the call. It needs to be serializable to go across the connection. Usually an assembler is used on the server side to transfer data between the DTO and any domain objects.

Tuttavia, questa descrizione sembra molto simile al Traduttore di entità .

"Implement an entity translator that transforms message data types to business types for requests and reverses the transformation for responses.

The entity translator is an object that is tightly coupled to message data types and business entities, while providing loose coupling between the consumers of the types. In other words, components of an application use the translator to transform data types and the translator has no knowledge about operations provided by the application. This behavior provides the ability to change data types on either end of the interaction without requiring changes to the other end. The only component that needs to be updated is the translator itself"

Quindi questo è un po 'di confusione.

Il motivo per cui sto facendo questa domanda è perché al momento sto costruendo una libreria client che mi consentirà di recuperare / inviare dati tramite API REST remota; tuttavia, mentre mappo questi dati di risposta nei miei DTO, ho preso in considerazione la creazione di un ulteriore strato anti-corruzione (?) che mapperà quindi tali DTO nei miei modelli di dominio.

Fondamentalmente, vorrei distribuire queste librerie via compositore come modulo preconfezionato, ma ho ancora la flessibilità di sostituirle se trovo qualcosa di meglio.

Un'altra domanda che vorrei porre è come distinguere tra Entità + DTO poiché Entità è un termine che viene spesso richiamato ogni volta che discuto dei Data Mapper (che è il modo in cui sto strutturando attualmente le mie librerie client). Anche se mi sono riferito a loro come DTO; il termine "Entità" è spesso usato per descrivere il tipo di oggetti che vuoi passare o recuperare tramite il Data Mapper.

Suppongo che sia possibile che io abbia utilizzato il pattern Active Record per troppo tempo, ma i due praticamente sembrano solo modelli di dominio anemico - cioè: solo getter e setter.

Come faccio a distinguere correttamente tra i due?

    
posta user2308097 29.09.2015 - 17:08
fonte

0 risposte