我们建立了一个以软件为服务的系统。现在我想知道是否需要将版本号提供给客户端。例如,Facebook没有给出版本号,谷歌也是如此。我的问题是,在客户端无法自行更改版本的应用程序中,基本上会包含版本号吗?
只是简单的更新,是的,我们确实提供了一个API,API将以类似的方式进行版本化,就像亚特兰西安做的api/,然后是api/v2/等等。
版本号只是用户看到的网站,而不是开发者。
在内部,我们使用Jira进行项目管理,在那里我们也使用Jira发布功能。所以在内部我们确实有版本号。只是暂时不适合顾客。
发布于 2014-12-13 19:06:00
您可能希望拥有应用程序的内部版本号,以便更好地管理内部开发流程。然而,这些数字对用户没有多大用处。
版本号的通常用途是告诉用户他们的应用程序是否是最新的。如果这不在他们的控制范围内,至少对支助人员来说,核实他们收到了最新版本是有用的。但是,当您拥有一个所有用户共享相同部署的服务软件时,几乎没有理由与他们交流版本号。
一个例外可能是当你不是唯一一个提供这种服务的人。当您只授权软件或自己授权时,其他人也提供与服务相同的软件时,将版本号传递给最终用户是很有用的,这样他们就可以比较哪个提供商提供哪个版本,并且知道他们的提供商使用的版本是否存在相关的使用差异。
发布于 2014-12-13 20:04:13
版本号有两个可能的使用者。您的内部流程和使用您的服务的人员。
对于内部进程,版本号可以帮助您识别什么东西是固定的,以及它们之后发生了什么变化。通过说“我们在1.2.3版本中修复了这个问题”,您就可以知道它是在哪里完成的,如果您现在正在经历相同的错误,那么您将得到一个回归。通过能够识别何时修复或实现(使用版本号),您现在可以缩小修复它所需做的范围。
服务的使用者也可以使用版本号。并不是所有的消费者都需要知道版本号,但是它可以帮助他们。通过说“在1.2.3版本中修复了这些bug,并在某个日期部署了这些bug”,正如消费者所知道的那样,您可能报告的bug已经修复。此外,当报告bug时,您有机会说:“这是在1.2.3中修复的,但现在在1.2.5中它又被破坏了。”对于报告错误,这可能是有价值的信息。
很多时候,软件作为一个服务也有一个接口的API。这个API也应该是版本化的。您可以在堆栈交换API和谷歌的数据API中看到这一点。API非常类似于托管在另一台服务器上的库。正如库是版本化的,API也是如此。
在这些情况下,版本号的目的是允许更有效地交流关于在哪些软件中报告、修复和当前正在运行的软件的信息。“当前运行”只有一个实例,这并不会降低前两点的有用性。它对内部和外部都是有用的。
还要考虑的是,除非您提供API,否则语义版本化并不一定那么有用。我在连续集成服务器的版本号对版本号非常有用的情况下工作过--“生产正在运行build 123,我们修复了目前正在QA环境中测试的build 145。当前的构建是155。”
发布于 2014-12-13 19:38:02
面向用户的代码不需要版本号。
但是,如果您正在编写由外部开发人员使用的代码,那么您绝对应该提供版本号,并在您的站点上维护多个版本。有一个明确的反对政策。这样做将使您可以自由地对您的API进行潜在的向后不兼容的更改,然后让依赖您的人在对他们更方便时进行升级。这样做并不像你在AWS时代想象的那样困难,因为您只需要维护运行旧版本的服务器,并使用新版本启动新版本。当你需要的时候释放到旧的,然后当你完成的时候解除它们。
是的,我知道Facebook不擅长这样做。但他们也因发布意外破坏人们使用API的代码而臭名昭著。我认识很多开发人员,他们非常希望他们能有任何替代Facebook的方法。Facebook成功地锁定了开发者,因为他们拥有用户。但你没有那个。如果您让开发人员对使用您的服务有这种感觉,他们就会离开。
https://softwareengineering.stackexchange.com/questions/266366
复制相似问题