根据IBM 的这篇关于 SOAP 中向后兼容性的文章,他们指出在不违反合同的情况下,不能将新字段添加到输出类型中。该页面的相关片段来自标题为“现有数据类型中的新的可选字段”的部分...
您可以将元素添加到现有的 complexType,只要将其设为可选(使用 minOccurs="0" 属性)。但小心点。仅当将其封闭的 complexType 作为新服务的输入接收时,添加一个可选元素才是一个微小的变化。新服务无法返回带有新字段的 complexType。如果旧客户端要接收新字段,则客户端反序列化将失败,因为客户端不知道新字段。
这是 2004 年为 WSDL 1.1 规范编写的。在 WSDL 1.2 规范下,这仍然适用吗?有没有办法为新的未知字段定义“忽略”的默认行为?该声明也似乎是特定于实现的,还是符合规范的?
我正在努力解决发展返回复杂业务对象的 SOAP 服务的问题。当消费者为他们找到用例时,将添加新字段。我想避免为了简单地添加新字段而保留 N 个版本的服务。