【问题标题】:Structuring the source code for multiple versions of web services为多个版本的 Web 服务构建源代码
【发布时间】:2009-10-06 03:34:48
【问题描述】:

当同一个源代码主干或分支中存在同一个 Web 服务的多个版本时,是否有构建源代码的约定?

这是我们的情况。

我们通过在 wsdl URL 中包含版本号来对 Web 服务进行版本控制,如下所示:

url/project/1.0/WebServiceA?wsdl

我将同时部署 1.1 版的 WebServiceA 和 1.0 版,因此 1.0 版的用户无需进行任何更改。 1.0 版和 1.1 版的 WebServiceA 将拥有各自独立的 Java 类。

我想在同一个 .war 文件中部署这两个版本。 (我们可以在 .war 中采用仅一个 Web 服务版本的策略,而在自己的 .war 中部署其他版本。当我们获得多个 Web 服务的多个版本时,这将导致要部署的 .war 数量增加。我宁愿只部署一个 .war。)

我认为我们应该为各种版本使用单独的包结构:

com.company.dept.ws.WebServiceA  (version 1.0)
com.company.dept.ws.v11.WebServiceA  (version 1.1)

com.company.dept.ws.WebServiceB  (version 1.0)
com.company.dept.ws.v11.WebServiceB  (version 1.1)
com.company.dept.ws.v12.WebServiceB  (version 1.2)

ws.、ws.v11. 和 ws.v12 下的 Java 类。将是单独的 Java 类。

你能看出这个约定在路上有什么问题吗?

如果在构建多个版本的 Web 服务代码的源代码时有一个行之有效的约定,我想在自己编写之前先了解一下。

谢谢。

院长

【问题讨论】:

    标签: web-services jax-ws


    【解决方案1】:

    既然您说您希望这些版本都“在同一个源代码主干或分支中”,我认为部分答案取决于您使用的源代码控制系统,以及您是否计划修复错误在旧版本中。

    如果您想修复旧版本中的错误,您需要能够在不同版本之间向前或向后集成更改。例如,假设您发现版本 1.0、1.1 和 1.2 中存在严重的安全问题。你不会想要修复它 3 次。大多数源代码控制系统将允许您在相关分支之间进行这种集成。有些(比如 Perforce,我相信还有 git,可能还有其他一些)可以让你在一个分支中集成文件之间的更改。 (实际上,Perforce 的“分支”概念只是为了方便记录文件间的集成)

    因此,您需要考虑是否需要进行此类多版本修复,如果需要,您的源控制系统能否处理分支内集成。如果没有,那么您最好为每个版本使用单独的分支。

    【讨论】:

    • 出于好奇:您是否有理由想在一个分支中完成所有工作?
    • 两个版本将同时部署,所以它们应该在同一个分支中。但是,它们基于不同的 Java 类。
    猜你喜欢
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2017-04-23
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多