我读了这个问题,用于版本化Web服务:
strategies-for-updating-or-versioning-web-services
现在我想问一下如何实现新版本。
现在在网址:myUrls/../v1
接受网络服务。现在我想创建新版本:myUrls/../v2
。我想保留旧的Web服务,只是添加一些新的Web服务到新版本。我该怎么做?我需要创建新的端点,或者我可以使用当前的,只是改变了一些东西。
请求帮助
更新:
我正在使用spring-ws和SOAP
答案 0 :(得分:1)
这取决于变化的性质。如果您只是在REST调用中添加额外的方法,那么从理论上讲,您只需添加到当前服务中,所有其他方法仍然有用。
如果您使用的是合约优先部署(如SOAP),则需要更新版本,因为需要更新WSDL。
这实际上取决于 - 您是否希望您的服务向后兼容当前版本的消费者?如果您乐意在每次进行更改时强迫您的消费者重构代码,那么是的,每次只更新相同的URL端点,但如果我正在使用您的服务,这会让我感到烦恼。
答案 1 :(得分:0)
这取决于您部署Web服务的方式。
就个人而言,如果更改是向后兼容的(正如@ david99world指出的那样),那么您只需将新操作添加到现有服务中。
如果更改不兼容(即现有操作的界面已更改),那么我将新服务打包为新的EAR / WAR。这样,您可以同时运行这两种服务,因此并非所有服务使用者都需要同时更改/测试/部署其代码。通过拥有两个单独的版本,您可以拥有两个服务都可以运行的过渡期(尽管这取决于例如基础数据库更改是否会阻止v1
与v2
同时工作)。
此外,如果更改失败,则很容易在不影响v2
的情况下取消部署v1
WAR / EAR,并且通过将WAR / EAR保持独立而不需要执行回归测试v1
只是因为您介绍了v2
。
由于使用单独的WAR / EAR,URL策略很可能必须是myURLv1/../v1
和myURLv2/../v2
......
希望这是有道理的。