可以向Web服务响应添加一个nillable字段中断向后兼容性?

时间:2012-08-20 22:21:58

标签: web-services backwards-compatibility null

我可以通过某种方式实现我的.Net Web服务API方法,以便在用户使用较新的wsdl时将新字段设置为值,如果用户使用较旧的wsdl,则将字段设置为nil。

即使这样,响应中的新字段是否存在使用较旧的wsdl破坏某些现有客户端应用程序的风险。我知道如果一个客户端应用程序在响应中获得一个设置为某个值的新字段(Web服务不会这样做),它可能会中断,但如果它在响应中得到一个新字段为零,它可能会中断吗?

1 个答案:

答案 0 :(得分:1)

是的,它可以打破客户。

大多数Web服务或客户端在处理之前验证请求或响应。这主要是使用XML模式完成的,新字段不在旧客户端的模式中;

您将收到The element X in namespace Y has invalid child element Z等错误。

如果在新架构中使用minOccurs="0"声明字段,则这不是问题。这意味着一个可选元素,如果值为null,则不会出现在XML实例中。

Nillable元素,即使它们的值为null,也将始终包含在XML实例中,但标有nil="true",表示它们确实为空。

以下是一些额外信息:Web services tip: Representations of null in XML Schema