4

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

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

4

1 回答 1

3

是的,它可以破坏客户。

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

你会得到像The element X in namespace Y has invalid child element Z.

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

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

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

于 2012-08-21T12:16:53.343 回答