【问题标题】:Mobile strategy: How to handle this server-client version permutation?移动策略:如何处理这种服务器-客户端版本排列?
【发布时间】:2012-09-24 22:14:41
【问题描述】:

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

Company A  version 1.0
Company B  version 1.1

我们在 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.

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

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

提前致谢。

【问题讨论】:

    标签: web-services mobile strategy-pattern


    【解决方案1】:

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

    我们目前正在考虑几个选项:

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

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

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

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

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

    【讨论】:

    • 我们实际上没有解决方案。基本上,我们正在执行选项 5“模块化应用程序代码以启用/禁用基于服务器版本的组件或行为。如果服务器更新很少,可能会起作用,但会变得混乱且难以维护,这种情况经常发生。”这很混乱,我们只是尽力跟上后端的变化。另一方面,该公司确实有迁移到 HTML5 前端的计划,希望它能解决所有问题。
    • 这篇文章已经 8 年了。你最终做了什么来解决这个问题?什么有效,什么无效?你今天会提出什么建议?
    猜你喜欢
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多