如何模块化地为不同版本的应用程序保留服务器端应用程序

How to modularly keep a serve-side application for different versions of an app

我正在向 Uber 和 Line 等应用程序的世界介绍。当我实现这种应用程序的服务器端时,我意识到我必须在运行时支持我的应用程序的不同版本。为了克服这个要求,我看到了三种不同的选择:

  1. 为支持的每个应用程序版本保留一个(不同的)运行 服务器端实例。例如,如果我支持 3 个版本的应用程序,我将在服务器中有 3 个实例 运行。
  2. 为函数使用命名空间,简而言之,克隆许多 functions/class。例如,如果我支持一个应用程序的 3 个版本,我可能会有 3 个版本的函数(例如 fun_v1、fun_v2、fun_v3)。
  3. 为每个应用程序版本保留一个(不同的)配置文件。此文件设置应用程序可以使用的功能或服务以及如何使用它们。

    这三个选项看起来不那么模块化并且有很多 "copy and paste" 代码。如果您有任何不同的意见,请告诉我。

通常移动应用程序通过一组 API routes/functions 与服务器通信。

根据我的经验,我想我会选择第二个选项。 通常我会在很长一段时间内将这些 API 路由开发成不同的版本(例如 v1、v2、v3 ......),所以假设应用程序的版本 1 调用路由 POST v1/login 链接到 login_v1,应用程序的版本 2 调用链接到 login_v2 的 POST v2/login。这种技术使事情变得灵活,因为您可以将任何路由映射到您想要的任何函数(例如 login/v3 到 login_v2)。

此外,服务器将跟踪应用程序的最新版本。当应用程序打开时,它会从服务器获取最新版本号,如果与应用程序的当前版本相比更新,我们可能会要求用户更新应用程序以获取新功能。

希望对您有所帮助。