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 :

Intérêt des DataSet


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2006
    Messages : 245
    Par défaut Intérêt des DataSet
    Bonsoir à tous,

    Le sujet peut sembler tout à fait provocateur, mais j'avoue ne pas bien comprendre l'intérêt d'un DataSet.
    J'ai regardé les tutoriaux, lu certains des cours sur ce site, et je ne comprend toujours pas, ou alors les DataSet (et j'ai raté quelquechose dans ce cas), ne sont utiles que dans certains cas particuliers.

    J'explique le but de mon programme ; vous pourrez sans doute m'expliquer où en mettre un, combien en mettre, et si, dans mon cas précis, cela sert effectivement à quelque chose.

    Je travaille dans une petite société d'électronique qui externalise (en France ) sa production. Nous avons plusieurs produits, qui peuvent être fabriqués par plusieurs sous-traitants différents. Chaque sous-traitant, bien sûr, fabrique aussi plusieurs produits.
    Nous nous occupons de faire un contrôle qualité des produits qui nous arrivent de nos sous-traitants avant expédition à nos clients, et c'est pour ce programme (que je vais créer de toutes pièces, ainsi que la base de données sur laquelle j'ai déjà réfléchi) que j'ai un problème.

    Le but est d'avoir à la fois des données que l'utilisateur peut modifier (dans ce cas, le produit et le sous-traitant), et des données que l'utilisateur ne peut pas modifier(la version du produit, le numéro du contrôle, ...)

    J'ai déjà écrit un programme qui va récupérer un certain nombre de ces informations dans un fichier XML et qui génère un pdf à partir des informations récoltées. Le problème, c'est que ce fichier XML ne permet pas de stocker d'informations utiles à des statistiques sur les sous-traitants, les différents problèmes rencontrés, ...

    Vous trouverez en pièce jointe une capture d'écran du programme existant.
    Pour la nouvelle version, j'ai déjà commencé à vérifier que je pouvais me connecter à ma base de données. Quel serait, dans mon cas, l'utilité d'un DataSet alors que je pourrais écrire toutes mes requêtes à la main ?

    Merci pour vos réponses.
    Images attachées Images attachées  

  2. #2
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    Bonjour,

    Personnellement, je me sers des DataSet pour pouvoir avoir une vue d'ensemble de ma base de données. Je crée un DataSet et plusieurs DataTable qui représentent mes futures tables physiques.
    Grâce à l'outil graphique de Visual Studio je peux ainsi me concentrer sur la structure de ma base de données sans me soucier si elle sera SqlServer ou MySql ou autre (car la conception est totalement décorrélée de la base de données physique à ce niveau).
    Le DataSet me permet de mettre des contraintes entre mes tables (unicité, champs non nulls, clés primaires etc...) et de savoir que l'application les respectera (car plus tard quand tu manipulera ces données dans des contrôles graphiques, tu auras automatiquement des erreurs remontées si ces règles ne sont pas respectées). Donc pour résumer ça permet d'avoir une base de données "propre" et pas corrompue par de mauvaises manipulations.

    De plus je peux facilement lier ("binder" comme on dit) tes DataTable avec tes contrôles graphiques (l'exemple le plus parlant est la DataGridView) ce qui te fera économiser un temps énorme car tu n'auras pas à formatter les données, créer les bonnes colonnes avec les bons types etc...
    Et quand tu veux modifier les données, le DataTable te permet d'identifier les lignes que tu as ajouté/modifié/supprimé pour pouvoir facilement tout sauvegarder d'un coup ou faire des traitements spécifiques (car les DataSet et DataTable embarquent beaucoup de fonctionnalités).

    Donc je trouve un très grand intérêt à utiliser les DataSet (gain de temps, conception sans lien avec un SGBD particulier, respect des contraintes de BDD).

    En fait on devrait même être obligés de les utiliser sous peine d'amende

    J'espère que ça t'aidera à y voir plus clair. Bien sûr c'est mon avis personnel, il doit y avoir encore d'autres bonnes raisons de les utiliser.

  3. #3
    Membre éclairé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2006
    Messages : 245
    Par défaut Merci
    Merci Contrec pour ces réponses.
    L'intérêt me paraissait, à un moment, de ne pas avoir à écrire de requêtes, VS s'en occupant tout seul. J'ai l'impression que cela est faux, et que les requêtes doivent être toujours écrites.
    Je comprend déjà mieux les DataSet, et leur intérêt pour ne pas interroger de manière incessante la base, mais plutôt les DataSet.

  4. #4
    Membre éclairé Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Par défaut
    Oui les DataSet viennent "couvrir" ta base de données en te donnant des fonctionnalités prêtes à utiliser, plutôt que ce soit à toi de tout coder.

    Pour les requêtes SQL, tu auras quand même à les écrire pour celles qui sont "spéciales" sinon lorsque tu créer dans l'outil graphique un DataTable, les requêtes Ajout/Modification/Suppression sont automatiquement crées.

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Ah ben j'aurais dis le contraire! Personellement, je n'utilise jamais de DataSet.
    Les DataSet sont pour moi utiles que dans des cas très spécifiques (aggrégation de plusieurs sources de données par exemple ou scénarios offlines par exemple).
    Dans un cas normal, tu utiliseras plutot une couche d'accès aux données qui te retourne des entités objets qui refletent les entités de ta base (via un ORM comme LinqToEntities/NHibernate ou même à la main).

    A mon gout, le DataSet est beaucoup trop utilisé pour rien. Un héritage de VB ou il te suffit de drag n dropper tous tes éléments sur ta form dans le designer et pouf ca marche. Sauf que développer proprement c'est un peu plus que ca et que ce genre d'appli c'est vite une catastrophe en perfs et à entretenir.

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Ah ben j'aurais dis le contraire! Personellement, je n'utilise jamais de DataSet.
    Les DataSet sont pour moi utiles que dans des cas très spécifiques (aggrégation de plusieurs sources de données par exemple ou scénarios offlines par exemple).
    Dans un cas normal, tu utiliseras plutot une couche d'accès aux données qui te retourne des entités objets qui refletent les entités de ta base (via un ORM comme LinqToEntities/NHibernate ou même à la main).

    A mon gout, le DataSet est beaucoup trop utilisé pour rien. Un héritage de VB ou il te suffit de drag n dropper tous tes éléments sur ta form dans le designer et pouf ca marche. Sauf que développer proprement c'est un peu plus que ca et que ce genre d'appli c'est vite une catastrophe en perfs et à entretenir.
    Bonjour,
    Si il suffit de "drag n dropper" et "pouf" çà marche, quel mal y-a-t-il ? J'y verrais ici plutôt un avantage...

    Aussi, tu te trompes complètement lorsque tu dit que développer proprement c'est plus que çà, n'oublies pas qu'ASP.net est un framework, et qui dit framework dit outils de travail, Dataset en fait partie. Concernant les perfs c'est encore faux, il est bien plus performant d'utiliser un dataset et de le stocker en mémoire (shared / static) que de faire des requêtes au SGBD. Et pour cela le simple ajout d'un mot clé suffit à parvenir à cette implémentation, alors que tout coder à la main requiert bien plus de temps.

    Je n'utilise que rarement le Dataset car je trouve aussi que cela implémente beaucoup de logique métier pour parfois pas grand chose. Mais cela offre malgré tout un certain confort, un gain de temps considérable (que ce soit à la création ou la mise à jour du schéma), et d'excellentes performances lorsque bien utilisés.

  7. #7
    Membre éclairé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2006
    Messages : 245
    Par défaut La guerre des modos :D
    Béh dis donc, je pensais pas que cette question ouvrirait un conflit entre modérateurs
    Globalement, pour dégager un point de vue semblable entre vous deux, le DataSet, ça peut être bien dans certains cas, mais il faut l'utiliser avec précautions.
    Je pense donc suivre la voie du "codage à la main", en utilisant, lorsque cela me semble utile, un DataSet : comme ça, tout le monde est content !

  8. #8
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Citation Envoyé par ThomasR Voir le message
    Aussi, tu te trompes complètement lorsque tu dit que développer proprement c'est plus que çà, n'oublies pas qu'ASP.net est un framework, et qui dit framework dit outils de travail, Dataset en fait partie. Concernant les perfs c'est encore faux, il est bien plus performant d'utiliser un dataset et de le stocker en mémoire (shared / static) que de faire des requêtes au SGBD. Et pour cela le simple ajout d'un mot clé suffit à parvenir à cette implémentation, alors que tout coder à la main requiert bien plus de temps.
    Sur la question des perfs... je demande à voir...

    Pour avoir maintenu une vieille appli avec une grosse quantité de données qui utilisait des DataSet, je peux t'assurer qu'une fois la partie accès aux données migrée et l'utilisation des DataSets stoppée, on a retrouvé des perfs dignes de ce nom.

    A mon sens, le DataSet n'a plus qu'un intérêt en mode deconnecté. Pour le reste, les cas d'utilisation à bon escient sont assez marginaux.

Discussions similaires

  1. Intérêt des dataset typés?
    Par mondeinfo dans le forum C#
    Réponses: 12
    Dernier message: 17/08/2010, 09h29
  2. Réponses: 6
    Dernier message: 23/11/2007, 12h18
  3. [glut] de l'intérêt des listes
    Par khayyam90 dans le forum OpenGL
    Réponses: 3
    Dernier message: 26/07/2004, 10h35
  4. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 22h28
  5. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11

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