XSD架构和SOAP请求

时间:2014-02-12 15:04:59

标签: c# wcf web-services soap

我们有一个xsd模式,它概述了我们系统中所有可能的数据元素,一些是简单的类型元素,一些是复杂的类型。我们将此架构提供给另一位将尝试使用SOAP编写Web服务的开发人员。哑巴样本中的xsd看起来像这样。

<xs:element name="Element1"> .... </xs:element>
<xs:element name="Element2"> .... </xs:element>
<xs:element name="Element3"> .... </xs:element>
<xs:element name="Element4"> .... </xs:element>

我计划通过调用他的WebService方法将数据发送给他。由于我的系统生成的消息类型,我将有两种类型的消息。第一个包含Element1和Element4,而第二个包含Element3,Element4和Element1。那他有什么选择呢?

  1. 他是否必须创建两个单独的Web服务,我会相应地使用它们吗?
  2. 创建一个Web服务,我将为这两种消息类型使用一个Web服务。
  3. 在第二次选择中,它是否会生成任何架构验证错误?如果是这样有办法解决它?我可以向他发送一个自定义SOAP标头来指示我发送的消息类型,以便他可以针对特定的xsd元素进行验证吗?

    我对WebService比较陌生,所以如果我误解了SOAP,XSD和WebService的基本机制,请随意指出它们或纠正我上面的任何假设。

1 个答案:

答案 0 :(得分:0)

我认为他只能制作一个网络服务。

我也不太喜欢XSD,但就我所知,有一个minOccurs属性可以使这个只用一个web服务。例如:

<!--The syntax may be incorrect-->
<xsd:complexType name="yourtype">
    <xsd:sequence>
        <xsd:element name="Element1" minOccurs="1" maxOccurs="1" .../>
        <xsd:element name="Element2" minOccurs="0" maxOccurs="1" ..../>            
        <xsd:element name="Element3" minOccurs="1" maxOccurs="1" ..../>
        <xsd:element name="Element4" minOccurs="1" maxOccurs="1" ..../>
    </xsd:sequence>
</xsd:complexType>

查看minOccurs="0",这意味着其他程序员可以省略Element2。如果你想要一些元素重复0或N次,你可以放maxOccurs="unbounded".