Java Web服务向后兼容性

Java Web服务向后兼容性,java,web-services,Java,Web Services,我有一个web服务,它接受一个id作为输入,并返回与该id关联的对象 现在我有一个要求,这个web服务将接受多个id,并返回多个与这些id关联的对象 我在这里关心的是,在合并新的更改时,我希望保持向后兼容性。关于输入,我通过在同一字段中接受分隔的字符串解决了这个问题。因此,与输入的向后兼容性无关 但对于输出,它将是一个对象列表,而不是单个对象 所以我的问题是返回对象列表而不是单个对象是否会破坏向后兼容性。我知道客户将不得不更改接受服务结果的代码片段,以接受列表 行业标准是什么。这种更改是否被视为

我有一个web服务,它接受一个id作为输入,并返回与该id关联的对象

现在我有一个要求,这个web服务将接受多个id,并返回多个与这些id关联的对象

我在这里关心的是,在合并新的更改时,我希望保持向后兼容性。关于输入,我通过在同一字段中接受分隔的字符串解决了这个问题。因此,与输入的向后兼容性无关

但对于输出,它将是一个对象列表,而不是单个对象

所以我的问题是返回对象列表而不是单个对象是否会破坏向后兼容性。我知道客户将不得不更改接受服务结果的代码片段,以接受列表


行业标准是什么。这种更改是否被视为破坏向后兼容性。

如果客户端必须修改任何内容,则它不向后兼容。但是,我不明白为什么需要更改当前存在的端口/端点。相反,将另一个添加到服务中。使用现有端口/端点的任何客户端都不需要更改任何内容。

如果客户端必须修改任何内容,则它不向后兼容。但是,我不明白为什么需要更改当前存在的端口/端点。相反,将另一个添加到服务中。使用现有端口/端点的任何客户端都不需要更改任何内容。

首先:是的,这是API的更改,它不向后兼容。例如,客户端需要更改某些内容,因为您的响应结构已从单个元素更改为元素列表

像我工作过的1k IT heads及以上这样的大公司过去常常对其WSDL/XSD进行版本控制。对WSDL/XSD的任何结构更改都会被视为服务本身的新版本,因此结构更改需要正式发布服务来填充其新的WSDL/XSD和相应的更改日志

然后,两家公司将新版本和旧版本的组件(例如wsdl/xsd)部署在不同的端点下,旧版本大约6-12个月的有效期结束,以保证向后兼容性

这样,当前的客户不必更改任何内容,我们的B2B合作伙伴就可以开始实施新的API

因此,在您的情况下,您可以通过以类似方式拥有两个版本来提供向后兼容性。我想这可以被看作是一个活生生的行业标准

无论您是否真的需要这个大的解决方案,都会出现许多新的复杂问题,并且您希望在生产环境中只有一个服务和一个端点,因此最好将这两个变体作为不同的操作提供。这样,您的API会发生变化,但所有旧操作仍然可用

假设我无法测试它:客户端不需要重新生成存根,因为他使用的存根没有改变

因此,基本上,我看到了这两种向后兼容的可能性:

多次部署/运行服务,例如多个端点,如/myServiceV1、/myServiceV2。每个API更改的新版本/版本

将该服务部署/运行一次,但将作为该服务一部分的所有旧请求保持不变


希望这有助于做出一个决定

首先:是的,这是对API的更改,它不向后兼容,例如,客户端需要更改某些内容,因为您的响应结构已从单个元素更改为元素列表

像我工作过的1k IT heads及以上这样的大公司过去常常对其WSDL/XSD进行版本控制。对WSDL/XSD的任何结构更改都会被视为服务本身的新版本,因此结构更改需要正式发布服务来填充其新的WSDL/XSD和相应的更改日志

然后,两家公司将新版本和旧版本的组件(例如wsdl/xsd)部署在不同的端点下,旧版本大约6-12个月的有效期结束,以保证向后兼容性

这样,当前的客户不必更改任何内容,我们的B2B合作伙伴就可以开始实施新的API

因此,在您的情况下,您可以通过以类似方式拥有两个版本来提供向后兼容性。我想这可以被看作是一个活生生的行业标准

无论您是否真的需要这个大的解决方案,都会出现许多新的复杂问题,并且您希望在生产环境中只有一个服务和一个端点,因此最好将这两个变体作为不同的操作提供。这样,您的API会发生变化,但所有旧操作仍然可用

假设我无法测试它:那么客户端就不应该 他需要重新生成存根,因为他以前使用的存根没有改变

因此,基本上,我看到了这两种向后兼容的可能性:

多次部署/运行服务,例如多个端点,如/myServiceV1、/myServiceV2。每个API更改的新版本/版本

将该服务部署/运行一次,但将作为该服务一部分的所有旧请求保持不变


希望这有助于做出一个决定

SOAP/REST是什么类型的web服务?SOAP/REST是什么类型的web服务?