移动策略:如何处理服务器-客户端版本排列?

Xi *_*ang 5 mobile web-services strategy-pattern

我们正在为客户托管 SAAS 应用程序。主应用程序是一个网络应用程序,不同的客户端可以使用不同的版本。例如:

Company A  version 1.0
Company B  version 1.1
Run Code Online (Sandbox Code Playgroud)

我们在 App Store 中也有 Android/iOS 应用程序。由于应用程序并不总是最新的,因此我们在市场上也可以有多个应用程序版本。例如 2.0 和 2.1 。因此,出于兼容性原因,我们必须确保每个客户端版本都适用于每个服务器版本:

server 1.0 must work with client 2.0,
server 1.0 must work with client 2.1,
server 1.1 must work with client 2.0, 
and server 1.1 must work with client 2.2.
Run Code Online (Sandbox Code Playgroud)

当只有2个服务器版本和2个客户端版本时,这是可以管理的。然而,随着时间的推移,这个列表变得疯狂。我们确实有一种机制可以强制移动应用程序更新到最新版本,但这有点烦人,所以管理人员不想经常这样做。

我的问题是,处理这个问题的最佳策略是什么?Android和iOS是否有内置功能,用户可以下载多个应用程序版本,并且只根据需要启动一个版本?

提前致谢。

小智 3

我们的多个客户也遇到了类似的问题,他们可能部署了不同的服务器版本。

我们目前正在考虑以下几种选择:

  • 管理客户在云中的部署(由我们管理),以确保他们始终运行最新版本。对于出于合规性或安全原因等原因而需要内部部署的客户来说,这是有问题的。
  • 将旧版本作为一个库捆绑在应用程序内部,并在运行时执行与服务器版本匹配的版本。不幸的是,这会导致混乱的构建和臃肿的应用程序包。
  • 告诉用户手动安装应用程序,不要发布到应用程序商店。对于不太懂技术的用户来说不方便且有问题。
  • 通过客户的服务器部署分发应用程序。需要获得在 Android 上从未知来源安装的权限。要求客户拥有一个适用于 iOS 的 iOS 企业帐户(299 美元/年,每个客户必须单独注册)。
  • 模块化应用程序代码以根据服务器版本启用/禁用组件或行为。如果服务器更新很少,可能会起作用,但经常发生会变得混乱且难以维护。

在每种情况下,每当公司升级服务器版本时,用户仍然必须更新他们的应用程序。

对于我们来说,使用PhoneGap,还有一种选择:

  • 从服务器下载应用程序代码并执行它。应用商店指南2.7 和 2.8 似乎禁止这样做,但开发者协议条款 3.3.2 表示允许下载在 Web 视图中运行的脚本。这意味着该应用程序基本上只是一个启动器,它连接服务器并从服务器获取脚本,然后运行它。缺点是每次运行应用程序时都需要下载和/或应用程序存储中的缓存机制。

您找到适合您的解决方案了吗?您选择如何处理这个问题?