4

根据IBM 的这篇关于 SOAP 中向后兼容性的文章,他们指出在不违反合同的情况下,不能将新字段添加到输出类型中。该页面的相关片段来自标题为“现有数据类型中的新的可选字段”的部分...

您可以将元素添加到现有的 complexType,只要将其设为可选(使用 minOccurs="0" 属性)。但小心点。仅当将其封闭的 complexType 作为新服务的输入接收时,添加一个可选元素才是一个微小的变化。新服务无法返回带有新字段的 complexType。如果旧客户端要接收新字段,则客户端反序列化将失败,因为客户端不知道新字段。

这是 2004 年为 WSDL 1.1 规范编写的。在 WSDL 1.2 规范下,这仍然适用吗?有没有办法为新的未知字段定义“忽略”的默认行为?该声明也似乎是特定于实现的,还是符合规范的?

我正在努力解决发展返回复杂业务对象的 SOAP 服务的问题。当消费者为他们找到用例时,将添加新字段。我想避免为了简单地添加新字段而保留 N 个版本的服务。

4

1 回答 1

3

从我个人的经验来看,情况仍然如此。我认为您主要关心的是版本控制方法。您可以查看:http ://www.ibm.com/developerworks/webservices/library/ws-version/ ,或更接近主页的Web 服务 API 版本控制

于 2013-02-22T14:58:02.183 回答