可以向web服务响应添加nillable字段来破坏向后兼容性



我可以通过某种方式实现我的.Net web服务API方法,这样,如果用户使用较新的wsdl,它将把新字段设置为一个值;如果用户使用旧的wsdl,则将把字段设置为nil。

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

是的,它可以破坏客户端。

大多数Web服务或客户端在处理请求或响应之前对其进行验证。这主要是通过XML架构完成的,而新字段不在旧客户端的架构中;

您将得到类似The element X in namespace Y has invalid child element Z的错误。

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

可Nillable元素,即使其值为null,也将始终包含在XML实例中,但用nil="true"标记,这表明它们确实为null。

以下是一些额外信息:Web服务提示:XML模式中null的表示。

最新更新