Pregunta

He leído mucho sobre DTO aquí, en libros y artículos, pero no estoy seguro si lo entiendo bien.

Estamos usando DTO's en nuestro proyecto para que sean casi solo propiedades de los objetos de dominio.Por esa razón, debemos tener una estructura de DTO compleja.Hay algunas clases que se extienden entre sí, composiciones, agregados, etc..

La pregunta es más general.

¿Es correcto heredar a una DTO de otra o para tener una referencia a una DTO en otra DTO?

¿Fue útil?

Solución

¿Es correcto heredar a una DTO de otro

Si comparten propiedades comunes, ¿por qué no?

Tener una referencia en una DTO a otra DTO

Definitivamente no hay nada de malo en esto, considere lo siguiente:

public class UserDto
{
    public string Id { get; set; }
    public string Username { get; set; }
    public string Email { get; set; }
    public AddressDto Address { get; set; }
}

public class AddressDto
{
    public string AddressLine1 { get; set; }
    public string AddressLine2 { get; set; }
    public string City { get; set; }
}

Recordar las DTO son simplemente Dumb objetos I.E. No tienen comportamiento (que no sea obtener / configurar sus propios datos).Las mismas reglas se aplican a las DTO como lo harían para clases / objetos estándar desde un punto de vista arquitectónico, por lo que no hay ninguna razón por la que no deba seguir los mismos principios si puede.

Otros consejos

dto es para la comunicación entre capas.

Prefiero DTO SIMPLE porque se utilizan principalmente para decirle la capa de persistencia, los objetos de acceso a datos generalmente hablando, qué almacenar.Si ese es el caso, no vayas a los dtos complejos.

Si los dtos son complejos (es decir, una DTO que tiene otra DTO como atributo), la complejidad requerida para que el DAO almacene los datos es mayor.Esto conflaza el objetivo de que DAO sea el camino a desacoplar de la tecnología de almacenamiento.

Por lo tanto, si una DTO necesita abordar otra DTO, solo use ID de cadena como atributos y mantenga un DAO simple para cada DTO.La lógica para manejar los DTO interconectados debe ir a la solicitud de servicio o el objeto comercial que hace uso del DAOS.De esta manera, aumenta la reutilización del código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top