1

我为版本控制 Web 服务阅读了这个问题:

更新或版本控制网络服务的策略

现在我想问如何实现新版本。

现在在网址上:myUrls/../v1接受网络服务。现在我想创建新版本: myUrls/../v2. 我想保留旧的网络服务,只是在新版本中添加一些新的网络服务。我该怎么做?我需要创建新的端点,或者我可以使用我当前的并且只是改变了一些东西。

谢谢帮助

更新:

我正在使用 spring-ws 和 SOAP

4

2 回答 2

1

这取决于变化的性质。如果您只是在 REST 调用中添加额外的方法,那么理论上,您可以添加到当前服务中,所有其他方法仍然可以使用。

如果您使用的是合同优先部署,例如 SOAP,那么您将需要版本,因为 WSDL 需要更新。

这真的取决于 - 您是否希望您的服务在当前版本上向后兼容消费者?如果您乐于在每次进行更改时强迫您的消费者重构他们的代码,那么是的,只需每次更新相同的 URL 端点,但如果我正在使用您的服务,这会让我有些恼火。

于 2012-11-28T09:34:45.057 回答
0

这取决于您如何部署 Web 服务。

就个人而言,如果更改是向后兼容的(正如@david99world 指出的那样),那么您只需将新操作添加到现有服务中。

如果更改不兼容(即现有操作的接口已更改),那么我会将新服务打包为新的 EAR/WAR。这样您就可以同时运行这两个服务,因此并非所有服务使用者都需要同时更改/测试/部署他们的代码。通过拥有两个单独的版本,您可以拥有两个服务都可以工作的过渡期(尽管这取决于例如底层数据库更改是否会阻止v1v2.

此外,如果更改不成功,很容易在v2不影响的情况下取消部署 WAR/EAR,v1并且通过保持 WAR/EAR 分开,您不需要v1仅仅因为引入v2.

由于使用单独的 WAR/EAR,URL 策略很可能必须是myURLv1/../v1并且myURLv2/../v2......

希望这是有道理的。

于 2012-11-28T09:50:56.040 回答