【发布时间】:2010-11-29 12:10:33
【问题描述】:
在 SOA 中,我相信 wsdl 不支持递归数据类型,但我看到了一些代理实际工作的示例。有人知道更多吗?
【问题讨论】:
在 SOA 中,我相信 wsdl 不支持递归数据类型,但我看到了一些代理实际工作的示例。有人知道更多吗?
【问题讨论】:
允许使用递归类型定义,甚至允许循环对象图并可序列化。但是,为了避免在序列化和反序列化时耗尽堆栈空间,您需要创建一个覆盖 CreateSerializer 方法的自定义行为,并在创建 DataContractSerializer 时将 preserveObjectReferences 参数设置为 true。请参阅 James Kovacs 的blog 了解更多信息。
【讨论】:
请定义递归的含义。以下是在 WSDL 中使用的有效 XML Schema:
<?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>
【讨论】: