Clases POCO y Clases DTO

Clases POCO y Clases DTO

A continuación haré una breve descripción, diferencias y la utilidad de las clases POCO y DTO.

POCO, es un termino analogo de POJO, dónde la “J” quiere decir JAVA, termino fue introducido por Martin Fowler.

Las clases POCO (Plain Old CLR Object), son clases simples dónde únicamente se define el domino a mantener, esta clase contiene propiedades y métodos. Estas clases no conocen de frameworks externos, infraestructura alguna, persistencias, interfaces ni herencias.

Ejemplo de una clase POCO:

public class Carro
{
public string CarroId { get; set; }

public int Model { get; set; }

public string Marca { get; set; }

public string Color { get; set; }

public long PersonaId { get; set; }

public Carro(string carroid, int model, string marca, string color, long personaId)
{
this.CarroId = carroid;
this.Model = model;
this.Marca = marca;
this.Color = color;
this.PersonaId = personaId;
}

public override string ToString()
{
return this.CarroId + " " + this.Marca;
}
}


DTO (Data Transfer Objects), por su parte es una clase que no posee métodos ni se aplica lógica de negocios en ella. Esta clase solo define las propiedades con las que se va a trabajar. Las clases DTO sirven para transferir datos entre los componentes de un proyecto software o incluso entre aplicaciones. Es en este punto dónde entra un poco la confusión entre POCO y DTO, ya que las clases POCO pueden llegar a ser utilizadas cómo DTO.

Cuándo utilizar una DTO:
  • Cuándo se requiere tener los datos que se encuentra en N entidades que retorna algún servicio o componente y estos son llamados uno a uno, en vez de realizar los N llamados, se puede realizar un solo llamado que retorne un DTO con la información combinada de las entidades.
  • Cuándo es necesario retornar parte de la información que se encuentra en una entidad y no se desea enviar la entidad completa, para esto se crea un objeto DTO con los valores específicos requeridos.

Ejemplo de una clase DTO:

public class Carro
{
public string CarroId { get; set; }

public int Model { get; set; }

public string Marca { get; set; }

public string Color { get; set; }

public long PersonaId { get; set; }

public Carro()
{

}

public Carro(string carroid, int model, string marca, string color, long personaId)
{
this.CarroId = carroid;
this.Model = model;
this.Marca = marca;
this.Color = color;
this.PersonaId = personaId;
}
}

Comentarios

Entradas populares de este blog

INTELLITEST

INTERFACES C#