如何让wsdl在事情发生变化时不需要改变?

时间:2012-11-01 19:11:31

标签: xml web-services interface wsdl xsd

我正在制作一个CRUD Web服务,而且我有对象(也是我系统中的数据库记录)让我们说客户有几十个属性。这些年来,一些属性可能会发生变化。在极少数情况下,它们可以重命名,我认为这不是问题,因为该内部实现和attribte名称不需要在界面中。但是会有新属性,我不知道如何正确处理它们。

我打算在架构中做这样的事情:

<xs:complexType name="tKeyValuePair">
 <xs:sequence>
  <xs:element name="fieldname" type="xs:string" />
  <xs:element name="value" type="xs:string" />
 </xs:sequence>
</xs:complexType>

<xs:element name="keyvaluepair" type="tKeyValuePair"  />

<xs:complexType name="tKeyValuePairs">
 <xs:sequence>
   <xs:element ref="keyvaluepair" minOccurs="0" maxOccurs="unbounded" />
 </xs:sequence>
</xs:complexType>

<xs:element name="fieldvalues" type="tKeyValuePairs" /> 

<xs:complexType name="tCustomerBase">
 <xs:sequence>
   <xs:element name="customername" type="xs:string" />
   <!-- here are other fields that can't change but can be minOccurs="0"-->
  <xs:element ref="fieldvalues"  />
</xs:sequence>

然后我为每个扩展tCustomerBase的操作提供了一个类型,例如在tCustomerUpdate中添加customerid以进行更新,以充当找到正确客户的关键,在tCustomerCreate中添加createuser以插入到在其他系统中创建它的商店。

现在fieldvalues是字符串,我知道哪个字段应该是哪种类型,我可以在我的WS中的db-operation之前转换它们。

但这有意义吗?我应该使用

xsd:any 

其他领域的某种方式?

使用

怎么样?
xsd:anyType

我可以使用它而不是字符串作为键值对值的类型吗?我将非常感谢帮助如何做到这一点!

除了我的问题,我很乐意听到有关这种架构设计的任何评论。所以请随意评论我在这里写的模拟架构部分!

谢谢和最佳反馈-Matti

0 个答案:

没有答案