我可以以某种方式实现我的 .Net Web 服务 API 方法,以便如果用户使用较新的 wsdl,它将新字段设置为一个值,如果用户使用较旧的 wsdl,则将字段设置为 nil。
即使这样,响应中的新字段是否存在使用旧 wsdl 破坏某些现有客户端应用程序的风险。我知道如果客户端应用程序在响应中获得一个设置为值的新字段(Web 服务不会这样做),它可能会中断,但如果它在响应中获得一个为零的新字段,它会中断吗?
我可以以某种方式实现我的 .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 实例中。
可空元素,即使它们的值为 null,也将始终包含在 XML 实例中,但标记为nil="true"
表示它们确实为 null。
以下是一些额外信息:Web 服务提示:XML Schema 中 null 的表示。