model view controller - create - ¿Cuál es la diferencia entre un objeto MVC Model, un objeto de dominio y un DTO
viewbag title (5)
1) No, es una definición de ViewModel. MVC Model Object y Domain Object son iguales.
2) Los modelos de dominio (Objetos) siempre están presentes, la lógica de negocios es opcional
3) Si no hay lógica de negocio en el objeto de dominio, automáticamente se convierte en DTO.
¿Cuál es la diferencia entre un objeto MVC Model, un objeto de dominio y un DTO?
Mi entendimiento es:
Objeto de modelo MVC:
Modela los datos que se mostrarán en una vista correspondiente. Como tal, puede que no se asigne directamente a un objeto de dominio, es decir, puede incluir datos de uno o más objetos de dominio.
- Lado del cliente
- Puede contener lógica comercial, por ejemplo, validación, propiedades calculadas, etc.
- Sin métodos relacionados con la persistencia
Objeto de dominio:
Objeto que modela un objeto del mundo real en el dominio del problema como Reserva, Cliente, Ordenador, etc. Se usa para persistir datos.
- Lado del servidor
- Sin lógica de negocios
DTO (Objeto de transferencia de datos):
Un objeto utilizado para transferir datos entre capas cuando las capas están en procesos separados, por ejemplo, de un DB a una aplicación de cliente. Permite una sola transacción a través del cable en lugar de múltiples llamadas. Un DTO contiene solo datos y métodos de acceso, sin lógica. Los datos son para una transacción DB determinada, por lo que pueden no estar directamente en un objeto de dominio, es decir, pueden incluir datos de uno o más objetos de dominio.
- Utilizado en ambos lados como pasado entre las capas
- Sin lógica de negocios
- Sin métodos relacionados con la persistencia
Entonces a las preguntas:
(1) ¿Es correcto mi entendimiento? ¿Me estoy perdiendo algunos puntos clave?
(2) ¿Hay alguna razón para no usar objetos de Dominio como el Modelo MVC, suponiendo que los objetos del Modelo no requieren una lógica comercial adicional?
(3) ¿Hay alguna razón para no utilizar DTO como el Modelo MVC, suponiendo que los objetos del Modelo no requieren una lógica comercial adicional?
Gracias.
Tim
Cualquier definición para la mayoría de los objetos se basa en el lugar de uso de los objetos:
Model
: es una definición general para usar objetos en el cliente o servidor .
Model View
: es un objeto que se usa en elclient
mayor parte del tiempo.Domain Object
: es un objeto que se utiliza en elserver
ytransfering data to the database
.Data Transfer Object(DTO)
: es un objeto que transfiere datos de un objeto a otro , especialmente para obtener datos en laAPI Call
(por ejemplo: en api GET Método llama para obtener datos, no debe dar modelos de base de datos al cliente, este propósito usasdto
).Aviso:
the definitions are true most of the time
pero en algunas situaciones no son prácticas.
El Dominio y DTO también pueden ser sus objetos "modelo": puede tener una vista para representar los detalles del objeto de dominio "Cliente".
Un objeto de dominio puede tener lógica de negocios para aplicar las propiedades de la entidad de dominio. la validación es uno de esos casos. El objeto de dominio por sí solo no contiene métodos relacionados con la persistencia, pero puede tener metadatos (como anotaciones) para admitir la persistencia.
el modelo de programación de POJO hace posible usar el mismo objeto como su dominio, DTO y objetos de modelo; esencialmente, no se implementarán interfaces extrañas que solo se aplicarán a una capa, pero que no se aplicarán a otras.
Los objetos de dominio y modelo son esencialmente los mismos y pueden contener lógica comercial. Dependiendo de la implementación, los objetos de dominio y DTO pueden ser equivalentes si elimina la lógica de negocios del modelo en una clase de servicio.
A menudo, una variante clave de la DTO es el modelo de vista, que se utiliza puramente para transferir datos entre el modelo de dominio y la vista, aunque a menudo un modelo de vista puede contener lógica, aunque esto debería ser puramente lógica de UI.
A DTO = is an object that carries data between processes.
¡Pero la parte más interesante es que no tiene ningún comportamiento, excepto el almacenamiento y la recuperación de sus propios datos!
Siguiendo con la metodología MVC ...
Domain = subject of your entire application.
Model = contains the (programming languages objects : EX: C# objects) to make up the universe of your application.
Obviamente pueden tener comportamiento y propiedades (ver diferencia con DTO).
A menudo, una aplicación (una luz) puede tener un modelo - caso en el que su modelo es exactamente su dominio. Otro modelo puede ser, un tipo de objeto totalmente diferente, que está procesando otro. Ambos, en este caso, son parte de su dominio y se denominan "modelos de dominio - objetos".
¡Espero que esta respuesta sea exhaustiva y lo deje todo en claro!