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

Windows Communication Foundation .NET Discussion :

Profondeur maximale pour sérialisation ?


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre du Club
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Points : 58
    Points
    58
    Par défaut Profondeur maximale pour sérialisation ?
    Bonjour,

    Je viens d'intégrer une nouvelle équipe et découvre aussi plein de projets, jusque là, tout va bien. En regardant d'un peu plus près le code, je m'aperçois qu'il est truffé de code smells (méthodes d'extension qui font du business ou mieux encore, une Func<.,.> qui embarque un paramètre au niveau de l'appelant et qui traverse les couches pour être exécutées 20.000 lieues sous les mers !) et j'en passe...

    Et là, je tombe sur un service WCF pas tout à fait comme je les connais. Les clients ne font jamais référence au service WCF (référence de service) mais passent par une couche "contract" et toute la partie générée par le service doit être codée à la main (base.Channel...) à chaque fois qu'on implémente une méthode. De même, la sérialisation XML (normalement automatique) a été réécrite "parce qu'elle ne supporte pas une trop grand profondeur" m'a-t-on dit. En fait, la structure des objets transférée est tellement gloubiboulguesque (imaginez, des inner classes dans des classes qui contiennent elles-mêmes d'autres inner classes...) qu'à priori la sérialisation "explose" ou "fait n'importe quoi" (le discours change en fonction de mes interlocuteurs).

    Bref, pour schématiser, on a un objet qui ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class Main 
    {
        class Inner1 
        {
            class Inner2
            {
                class Inner3
                {
                     ....
                }
            }
        }
    }
    Et donc, je voudrais avoir jusqu'à quel niveau d'imbrication la sérialisation XML fonctionne ?

    Voyant l'état du code, le niveau de certains membres de l'équipe et le fait que personne ne connaisse le livre "Coder Proprement", vous comprendrez que j'émets quelques doutes vis-à-vis des explications qui me sont données. C'est donc pour ça que je vous pose la question aujourd'hui !

    Merci d'avances pour vos réponses !

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 546
    Points
    10 546
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    A ma connaissance, il n'y a pas de limitation lié à la profondeur lors de la sérialisation XML. Il faut juste que les classes et les méthodes soient correctement décorées avec les bons attributs.

    Il faudrait avoir les causes réelles pour avoir choisi de tout faire à la mano...

  3. #3
    Membre du Club
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Merci pour ta réponse. C'est bien ce qui me semblait, j'avais déjà effectué quelques recherches mais j'ai rien trouvé sur le sujet.

    La raison que l'on m'a donné c'était justement à cause de cette trop grande profondeur d'éléments imbriqués. A mon avis, vu le personnage, ça ne m'étonne pas. C'est le même personnage qui ose remettre en cause un moteur de Bdd (SQL Server entre autres) alors qu'en fait c'est son code qui est foireux. Et ça se dit ingénieur... Bref, voilà juste un aperçu de ma vie

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 546
    Points
    10 546
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par pot2yaourt Voir le message
    C'est le même personnage qui ose remettre en cause un moteur de Bdd (SQL Server entre autres) alors qu'en fait c'est son code qui est foireux. Et ça se dit ingénieur... Bref, voilà juste un aperçu de ma vie
    Si un bug est toujours possible, même dans des SGBD, un bug au sein même du moteur, surtout avec SQL Server, est très peu probable.

    Enfin, il est tellement plus facile de remettre en cause les autres et les outils que ses propres compétences...

    Courage !

  5. #5
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    En WCF, la profondeur de sérialisation est définie (et modifiable) dans les "readerquotas" du binding : <readerQuotas>.

    Il s'agit de la propriété maxDepth.
    Sa valeur par défaut est 32... Ce qui peut être vite limitant quand on doit envoyer des graphes d'objets complexes.

    Mais de là à réécrire la méthode de sérialisation...

  6. #6
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 546
    Points
    10 546
    Billets dans le blog
    21
    Par défaut
    C'est bon à savoir que WCF limite la profondeur. Merci pour l'info

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

Discussions similaires

  1. IA pour un puissance 4 : profondeur maximale ?
    Par Aspic dans le forum Intelligence artificielle
    Réponses: 3
    Dernier message: 06/12/2008, 21h49
  2. [W3C] taille maximale pour une URL
    Par trotters213 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 01/08/2007, 12h46
  3. Taille maximale pour un int
    Par Art19 dans le forum Langage
    Réponses: 2
    Dernier message: 28/07/2007, 11h19
  4. [GD] Taille maximale pour ImageCreateFromPng
    Par vica6a dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 05/04/2007, 15h32
  5. Réponses: 4
    Dernier message: 12/12/2006, 11h22

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