Bonjour à tous,
Suite à un gros bottleneck sur une application, j'ai analysé le flux SOAP transmis du webservice au client, et je me suis rendu compte que la gestion des références n'était pas faite pour l'objet root du soap. Je m'explique :
Imaginons un objet Categorie possèdant des Articles. Categorie possède une liste d'articles et chaque article possède un lien retour vers la catégorie.
Donc, pour éviter que la sérialisation ne me répete le bloc SOAP de la catégorie dans tous les articles, j'ai placé le parametre IsReference:=true dans la balise DataContract comme ceci :
<DataContract(IsReference:=True)>
Et ce sur mes objets Categorie et Article.
Donc du coup, il est censé créer un attribut Zid sur la balise Categorie et dans mes articles j'aurais bien une balise Categorie, mais qui devrait etre quasi vide avec seulement un attribut zRef correspondant au Zid de la catégorie.
Ce systeme fonctionne bien sur des éléments en profondeur, mais quand la référence (dans mon cas la catégorie) est l'élément principal (le premier élément du flux), je n'ai pas de balise <Categorie>, ca commence direct avec les données de la catégorie, donc forcement je n'ai pas de zId. Du coup mes articles possèdent une balise categorie complete au lieu d'avoir un Zref.
Existe-t-il une solution à ce genre de soucis ?
Merci d'avance
Partager