Quelle est la différence entre un objet modèle MVC, un objet domaine et un DTO?
Ma compréhension est:
objet modèle MVC:
Modélise les données à afficher par une vue correspondante. Il peut ne pas correspondre directement à un objet de domaine, c'est-à-dire qu'il peut inclure des données d'un ou plusieurs objets de domaine.
Objet de domaine:
Un objet qui modélise un objet du monde réel dans le domaine problématique comme Réservation, Client, Commande, etc. Utilisé pour conserver les données.
DTO (Data Transfer Object):
Un objet utilisé pour transférer des données entre les couches lorsque les couches sont dans des processus distincts, par exemple d'une base de données vers une application cliente. Permet une seule transaction sur le câble plutôt que plusieurs appels lors de la récupération des données correspondant à plusieurs objets de domaine. Un DTO contient uniquement des données et des méthodes d'accesseur et aucune logique n'est présente. Les données sont destinées à une transaction de base de données particulière, de sorte qu'elles peuvent ou non être directement mappées à un objet de domaine car elles peuvent inclure des données provenant d'un ou plusieurs objets de domaine.
Donc, les questions:
La compréhension ci-dessus est-elle correcte? Suis-je en train de manquer certains points clés?
Y a-t-il des raisons de ne pas utiliser les objets de domaine comme modèle MVC en supposant que les objets de modèle ne nécessitent pas de logique métier supplémentaire?
Y a-t-il des raisons de ne pas utiliser les DTO comme modèle MVC en supposant que les objets du modèle ne nécessitent pas de logique métier supplémentaire?
Les objets de domaine et de modèle sont essentiellement les mêmes et peuvent contenir une logique métier. Selon l'implémentation, les objets domaine et DTO peuvent être équivalents si vous supprimez la logique métier du modèle dans une classe de service.
Souvent, une variante clé du DTO est le modèle de vue, qui est utilisé uniquement pour transférer des données entre le modèle de domaine et la vue, bien que souvent un modèle de vue puisse contenir une logique, bien qu'il s'agisse d'une logique d'interface utilisateur pure.
Le domaine et le DTO peuvent également être vos objets "modèle" - vous pouvez avoir une vue pour restituer les détails de l'objet de domaine "client".
Un objet de domaine peut avoir une logique métier pour appliquer les propriétés de l'entité de domaine. la validation en est un exemple. L'objet de domaine en lui-même ne contient pas de méthodes liées à la persistance, mais il peut avoir des métadonnées (comme des annotations) pour prendre en charge la persistance
le modèle de programmation POJO permet d'utiliser le même objet que votre domaine, DTO et objets de modèle - essentiellement, vous ne serez pas implémenté d'interfaces étrangères qui ne s'appliqueront qu'à une couche mais ne s'appliqueront pas à d'autres.
A DTO = is an object that carries data between processes.
Mais la partie la plus intéressante est que, il n'a aucun comportement sauf pour le stockage et la récupération de ses propres données !!!
Rester fidèle à la méthodologie MVC ...
Domain = subject of your entire application.
Model = contains the (programming languages objects : EX: C# objects) to make up the universe of your application.
Ils peuvent évidemment avoir un comportement et des propriétés (voir différence avec DTO).
Souvent, une application (légère) peut avoir un modèle - cas dans lequel votre modèle est exactement votre domaine. Un autre modèle peut être, un type d'objet totalement différent, qui en traite un autre. Les deux, dans ce cas, font partie de votre domaine et sont nommés "modèles de domaine - objets".
Espérons que cette réponse soit exhaustive et que tout soit clair pour vous!
Toute définition de la plupart des objets est différente selon le lieu d'utilisation des objets:
Model
: est une définition générale pour utiliser objet dans client ou serveur.
Model View
: Est un objet utilisé dansclient
la plupart du temps.Domain Object
: Est un objet utilisant dansserver
ettransfering data to the database
.Data Transfer Object(DTO)
: est un objet qui transfère des données d'un objet à un autre objet, spécialement pour obtenir des données dansAPI Call
(par exemple: dans api GET Méthode appel pour obtenir des données vous ne devez pas donner de modèles de base de données au client, à cet effet vous utilisezdto
).Remarque:
the definitions are true most of the time
Mais dans certaines situations, ce n'est pas pratique.
1) Non, c'est une définition de ViewModel. L'objet modèle MVC et l'objet domaine sont tous deux identiques.
2) Les modèles de domaine (objets) sont toujours présents, la logique métier est facultative
3) S'il n'y a pas de logique métier dans l'objet de domaine, il devient automatiquement DTO.
Ma compréhension (en bref) est la suivante:
(MVC) Objet modèle:
PersonEditModel
, PersonViewModel
ou simplement PersonModel
Objet de domaine:
DTO (Data Transfer Object):