Dans SOA je crois que le wsdl ne supporte pas les types de données récursifs mais j'ai vu quelques exemples où le proxy fonctionne réellement. Quelqu'un en sait plus à ce sujet?Un contrat de données WCF peut-il être récursif? Par exemple un arbre binaire? Existe-t-il une différence avec les services ASMX pour la prise en charge des structures de données récursives?
Répondre
Veuillez définir ce que vous voulez dire par récursif. Ce qui suit est un schéma XML valide pour une utilisation dans un WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Node" type="NodeType"/>
<xs:complexType name="NodeType">
<xs:sequence>
<xs:element name="Node" type="NodeType"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
définitions de type récursives sont autorisés et même des graphes d'objets cycliques sont autorisés et sérialisable. Cependant, pour éviter de manquer d'espace de pile lors de la sérialisation et de la désérialisation, vous devez créer un comportement personnalisé remplaçant la méthode CreateSerializer et définissant le paramètre preserveObjectReferences sur true lors de la création d'un DataContractSerializer. Voir blog de James Kovacs pour plus.
Merci Travis, voici la réponse que je cherchais. Très bon blog en effet –
Disons que vous avez quelque chose comme ceci: [DataContract] Arbre public class { [DataMember] Arbre public gauche { get; ensemble; } [DataMember] public Tree Right { get; Public data string { get; set; } } } –
Neo: cela devrait fonctionner. –
dans SOA, n'est-il pas vrai que les types de données récursifs ne sont pas pris en charge? –