Esta es la solución más exacta que encomtrarás dar, pero mírala detenidamente y analiza si es compatible a tu proyecto.
Solución:
Mis definiciones Layman (no estándar)
POCO
– Objeto %Insert_Your_Language% antiguo simple. Un tipo sin lógica en él. Simplemente almacena datos en la memoria. Por lo general, verá solo propiedades automáticas en él, a veces campos y constructores.Domain object
una instancia de una clase que está relacionada con su dominio. Probablemente excluiría cualquier objeto de utilidad o satélite del objeto de dominio, por ejemplo, en la mayoría de los casos, los objetos de dominio no incluyen cosas como registro, formateo, serialización, cifrado, etc., a menos que esté creando específicamente un producto para registrar, serializar, formatear o cifrar respectivamente .Model object
creo que es lo mismo queDomain object
. La gente tiende a usar esto indistintamente (puedo estar equivocado)Entity
una clase que tieneid
Repository
una clase que habla con un almacenamiento de datos desde un lado (por ejemplo, una base de datos, un servicio de datos u ORM) y con el servicio, la interfaz de usuario, la capa empresarial o cualquier otro organismo solicitante. Por lo general, oculta todas las cosas relacionadas con los datos (como la replicación, la agrupación de conexiones, key restricciones, transacciones, etc.) y simplifica el trabajo con datosService
software que proporciona alguna funcionalidad generalmente a través de una API pública. Dependiendo de la capa, puede ser, por ejemplo, un contenedor autónomo RESTful o una clase que le permita encontrar una instancia particular del tipo necesario.
respuesta original
Estos son términos que se utilizan en gran medida en el diseño controlado por dominio (distribuido). Ellos no son los mismos. El termino objeto modelo puede usarse como sinónimo de objeto de dominio.
Objetos de dominio. Objetos del área específica del negocio que representan algo significativo para el experto del dominio. Los objetos de dominio están representados principalmente por entidades y objetos de valor. En términos generales, la mayoría de los objetos que viven en la capa de dominio contribuyen al modelo y son objetos de dominio.
Entidad. Un objeto definido fundamentalmente no por su attributessino por un hilo de continuidad e identidad. (Lo que significa deber tener Identificación)
POCO. Un objeto simple sin lógica complicada, generalmente tiene solo unas pocas propiedades y se usa con ORM o como un objeto de transferencia de datos
class Person
– Entidad y POCO, instancia de esta clase es Objeto de Dominio class PersonService
– Servicio class PersonRepository
– Repositorio
básicamente todo se reduce a la lógica interna
- Los objetos de dominio tienen una lógica de dominio interna para cosas como la validación, etc.
- El modelo es básicamente un objeto de dominio ligero, conocen los datos que tienen pero nada realmente sobre cómo se van a utilizar.
- Las entidades tienen datos y tienen cierto conocimiento interno de dónde provienen y dónde se guardarán, actualizarán, etc.
- POCO contiene datos y puede tener algún conocimiento interno sobre sí mismo, cosas como cuál es el valor total de todos los elementos en una colección de propiedades
- DTO es el elemento más simple de todos, solo contiene datos y no tiene lógica
Básicamente, todos se usan para lo mismo, depende de qué tan inteligentes quieras que sean.
de acuerdo con su ejemplo de código, la clase Person sería un objeto de dominio o un modelo, los otros 2 son un servicio y un repositorio. Los objetos de dominio, Pocos, modelos, dtos, etc. se usan como mensajes, se pasan de una capa a la siguiente, una clase de servicio como PersonService es una capa en la aplicación y lo mismo ocurre con la clase Repository como PersonRepository. para obtener una buena vista general, consulte http://bob-the-janitor.blogspot.com/2009/07/n-tier-design-revisit-part-1-over-view.html en este caso se trata de usar una entidad de datos que es básicamente un dto
Es más una connotación de función; un objeto de dominio es algo que es específico de su implementación lógica y puede ser más complejo que un POCO simple; una entidad tiene una connotación para representar algo (generalmente en referencia a un medio de persistencia), y un POCO es solo un identificador rápido para una clase. Un modelo es solo un término que se usa para representar un objeto (generalmente contiene un estado y generalmente se ocupa de la interfaz de usuario o la base de datos).
No es que haya ninguna diferencia funcional, solo son términos diferentes para describir algo más de cerca. Como la diferencia entre un auto de carrera, una camioneta y un sedán familiar. Todos son automóviles, pero cada término es más descriptivo.
Si te ha sido útil este post, agradeceríamos que lo compartas con el resto programadores de esta forma contrubuyes a dar difusión a este contenido.