【问题标题】:How to modularly keep a serve-side application for different versions of an app如何为不同版本的应用程序模块化地保留服务端应用程序
【发布时间】:2020-01-20 03:38:04
【问题描述】:
我正在向 Uber 和 Line 等应用程序世界介绍。当我实现这种应用程序的服务器端时,我意识到我必须在运行时支持我的应用程序的不同版本。为了克服这个要求,我看到了三种不同的选择:
- 为每个支持的应用程序版本保留一个(不同的)正在运行的服务器端实例。例如,如果我支持 3 个版本的应用程序,我将在服务器中运行 3 个实例。
- 为函数使用命名空间,简而言之,克隆许多函数/类。例如,如果我支持 3 个版本的应用,我可能会拥有 3 个版本的函数(例如 fun_v1、fun_v2、fun_v3)。
-
为每个应用版本保留一个(不同的)配置文件。此文件设置应用程序可以使用的功能或服务以及如何使用它。
这三个选项看起来并不那么模块化,并且有很多“复制和粘贴”代码。如果您有任何不同的意见,请告诉我。
【问题讨论】:
标签:
android
ios
versioning
modularity
【解决方案1】:
通常移动应用通过一组 API 路由/函数与服务器通信。
根据我的经验,我想我会选择第二个选项。
通常我会在很长一段时间内将这些 API 路由开发成不同的版本(例如 v1、v2、v3...),所以假设应用程序的版本 1 调用链接到 login_v1 的路由 POST v1/login 和版本 2的应用程序调用 POST v2/login 链接到 login_v2。这种技术使事情变得灵活,因为您可以将任何路由映射到您想要的任何功能(例如,login/v3 到 login_v2)。
此外,服务器将跟踪应用程序的最新版本。当应用打开时,它会从服务器获取最新的版本号,如果它比应用的当前版本更新,我们可能会要求用户更新应用以获取新功能。
希望这会有所帮助。