Version control JAX-WS服务和客户端版本控制

Version control JAX-WS服务和客户端版本控制,version-control,jax-ws,ibm-rad,Version Control,Jax Ws,Ibm Rad,我的团队是第一次进入web服务领域。控制web服务和客户端版本控制问题的常用方法是什么?我们正在使用IBM的RAD中提供的向导生成我们的服务和客户机。服务和客户机工作得很好,但我们想知道如何管理这些服务和客户机将成为今后的一项任务 -如果一个服务发生了变化,并且它的接口没有发生变化,我想老客户永远不会知道这两者之间的区别,并且可以正常工作 -如果服务更改为向参数添加新属性,如果旧客户端不需要设置该值,它们会使用它吗 -随着web服务数量的增长和使用其客户端的应用程序数量的增长,人们如何处理web

我的团队是第一次进入web服务领域。控制web服务和客户端版本控制问题的常用方法是什么?我们正在使用IBM的RAD中提供的向导生成我们的服务和客户机。服务和客户机工作得很好,但我们想知道如何管理这些服务和客户机将成为今后的一项任务

-如果一个服务发生了变化,并且它的接口没有发生变化,我想老客户永远不会知道这两者之间的区别,并且可以正常工作

-如果服务更改为向参数添加新属性,如果旧客户端不需要设置该值,它们会使用它吗


-随着web服务数量的增长和使用其客户端的应用程序数量的增长,人们如何处理web服务的版本控制?这方面的最佳实践是什么?

我们使用两种类型的版本控制。一个对客户端可见(公共)而另一个不可见(私有)。这取决于(您已经提到的)客户是否受到影响

如果客户机受到诸如XSD模式定义或WS-changes功能更改的影响,客户机也必须修改其终端,那么我们将更改公共版本。我们在WS-context根目录中增加版本号,这意味着它将具有与以前版本不同的URL。还要确保代码存档(在我们的例子中是war)也有公共版本,以免覆盖以前的部署

例如,我们称为foo的WS在公共版本2中。它的URL是
http://ourserver:8000/foo_2
和war文件称为foo_2。我们修改了XSD模式,因此客户端必须对更改做出反应。我们更新了版本,现在URL是
http://ourserver:8000/foo_3
和war文件称为foo_3。以前的版本仍然存在,而客户端可以慢慢过渡到新版本

如果更改没有强制客户端执行任何操作,那么我们称之为私有版本控制。这通常与公共版本一起显示为项目名称的一部分。使用前面的示例,我们有一个WS-foo,具有私有版本5和公共版本2。我们的这个服务项目叫做WS_foo_2_5。我们现在更改存储传入数据的顺序。这不会影响客户端,因此我们更改了私有版本。实际上,我们有一个WS_foo_2_6项目。我们从中创建了一个名为foo_2的代码归档,并将其URL设置为
http://ourserver:8000/foo_2
。通过这种方式,我们修改了版本,而没有更改客户机POV中的任何内容