IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

DTO vs Dataset


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 83
    Points : 60
    Points
    60
    Par défaut DTO vs Dataset
    Salut

    je n'arrive toujours pas à cerner la différence entre un Data Transfer Object et un Dataset. Je sais que les deux peuvent être utilisé pour transférer les donnée d' une base de donnée et une application. Dans mon Tool que je developpe actuellement j'utilise les dataSets(qui fonctionnent très bien) , je dois expliquer à mon Chef pourquoi j'ai choisi les DataSets et lui parler des autres possibilitées. Venez moi aide

  2. #2
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 69
    Points : 86
    Points
    86
    Par défaut
    Salut.

    Je suis loin d'être un expert mais espère pouvoir éclairer ta lanterne. En fait les DTO (Objets de Transfert de Données) font partie d'un modèle de conception préconisé pour les applications pro faisant appel aux bases de données. Le modèle préconise de séparer la logique de l'appli en couches. Les DTO en sont une. Je vais prendre un exemple : une appli qui doit gérer des données d'employés.

    1) L'appli fait appel aux Objets d'Accès aux Données (DAO) qui se chargent d'envoyer la bonne requête à la base pour obtenir les données voulues.
    2) Les données obtenues (celles de l'employé recherché par exemple) sont stockées dans un objet d'une classe propre à l'appli que tu as créée pour ça : un DTO. Son rôle est UNIQUEMENT de stocker les données, sans aucune "intelligence" sous une forme qui correspond aux besoins métiers de l'appli (un objet représentant un employé dans notre cas, par exemple).
    3) Le DTO est passé à des Business Objects (en français ça donne quoi ?), des objets dont le rôle est de traiter les données selon les règles métier (par exemple augmenter le salaire d'un employé, calculer ses congés restant, etc...).

    Donc le DTO est un type d'objet que tu crées toi-même. Je ne pense donc pas que les DataSet puisse être considérés comme des DTO. Les deux ne sont donc pas en concurrence.

    A première vue j'aurais tendance à dire que si l'on utilise directement les DataSets on s'affranchit de ce modèle de développement par couches en utilisant pas de DTO (on récupère les données brutes sous forme de DataTables ou DataSets sans avoir besoin de DTO pour stocker et organiser les données en leur donnant une structure calquée sur les règles métier du projet).

    Pas certrain d'avoir été très clair sur ce coup-là .

  3. #3
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Les DataSet sont assez employés dans les applications en mode déconnecté. tu charges tes données dedans, tu les manipules et quand tu en as besoin tu pousses tes tables vers la base. Il faut être vigilent avec les accès concurentiels !

    Le DTO sont des coquilles de données. Des objets stupides qui ne méritent pas leur nom d'objet (selon la définition POO), mais très apprécié pour le soi-disant découpage en couches.

    Tu as la solution de faire des POCO (des objets avec données et méthodes) qui se situent alors dans ta BL. Ils appelent la couche DAL pour les transfert DB et sont utilisés pour les traitements. Il sont appelés par ta couche de présentation. Cette façon de faire n'est plus "à la mode", à tord du point de vue POO !
    Mais, car il y a toujours un mais, si tu entre dans une problématique de traitement avec SGBD interchangeable (ce qui est rare) il devient difficile de la mettre en oeuvre. Si ton appli utilise sa propre DAL, sur un SGBD qui n'est pas destiné à changer, alors inutile de faire 2 dll pour la DAL et la BL (ça ne sert à rien) autant faire 2 répertoires et tu es débarassé de certains problèmes.
    J'utilise assez souvant cete solution en intégrant une couche framework qui contient une classse générique pour l'ADO (avec gestion des connexions, requêtes, etc.) appelée dans ma DAL qui fait partie de ma DLL Core. ma dernière DLL étant la présentation qui peut changer. Mon "Core" est appelé par plusieurs projets et fonctionne très bien (factorisation + Design pattern à gogo)

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    C'est quoi comme appli ? Une appli lourde (WPF/Winform,...), web, client léger (silverlight)?
    C'est en multi-tiers?

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    c'est une winForm

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    Et ma seconde question? (multi-tiers comment? winform => BDD ou Winform => svc =>BDD)?

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    Elle n'est pas en multi-tiers

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    Bin alors ta répose est simple:
    Citation Envoyé par camer12 Voir le message
    Elle n'est pas en multi-tiers
    => donc pas besoin de tranporter les données
    => donc pas besoin de DTO (T = transfert)

    Donc un dataset va très bien dans ton cas, car tu n'as aucun besoin de le trasnporter dans un service WCF par exemple. (Car un dataset est un objet assez lourd à transporter, et je sais même pas si c'est possible car sans doute plein de dépendances)

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    est il néanmoins possible d'utiliser les DTOs dans les applications non multi-tiers?

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par camer12 Voir le message
    est il néanmoins possible d'utiliser les DTOs dans les applications non multi-tiers?
    Absolument.

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    Citation Envoyé par camer12 Voir le message
    est il néanmoins possible d'utiliser les DTOs dans les applications non multi-tiers?
    Bien sûr mais où est l'intérêt?

  12. #12
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    Une autre question: Pourquoi le datagridview est il plus approprié(d'après ce que j'ai lu sur le net) que les autres contrôleur en ce qui concerne le "binding" avec le dataset. Pourquoi pas Treeview ou Listview......

  13. #13
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par camer12 Voir le message
    Une autre question: Pourquoi le datagridview est il plus approprié(d'après ce que j'ai lu sur le net) que les autres contrôleur en ce qui concerne le "binding" avec le dataset. Pourquoi pas Treeview ou Listview......
    Cela dépend du type d'interaction utilisateur dont tu as besoin : TreeView et ListView ne sont destinés de facto qu'à de l'affichage. Le DataGridView permet la saisie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le dataset.bof ne répond plus.
    Par fplanglois dans le forum Bases de données
    Réponses: 6
    Dernier message: 23/03/2004, 09h45
  2. Modifier l'ordre des Fields d'un dataset
    Par teska dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/03/2004, 16h38
  3. [C#] [SQLSERVER2000] Dataset et Xml
    Par farfadet dans le forum ASP.NET
    Réponses: 11
    Dernier message: 16/03/2004, 16h02
  4. [VB.net][PostgreSQL & ODBC] DataSet => NO_DAT
    Par rebolon dans le forum Accès aux données
    Réponses: 2
    Dernier message: 28/01/2004, 09h01
  5. [FLASH MX 2004 pro] DATASET, XML, ASP
    Par kenshi dans le forum Flash
    Réponses: 4
    Dernier message: 27/01/2004, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo