web-services - 移动策略 : How to handle this server-client version permutation?

标签 web-services mobile strategy-pattern

我们正在为客户托管一个 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 是否有内置功能,用户可以下载多个应用程序版本,只在需要时启动一个?

提前致谢。

最佳答案

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

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

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

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

    对我们来说,使用 PhoneGap ,还有一种选择:
  • 从服务器下载应用程序代码并执行它。 App store guidelines 2.7 和 2.8 似乎禁止这样做,但开发者协议(protocol)条款 3.3.2 说允许下载在 web View 中运行的脚本。这意味着该应用程序基本上只是一个启动器,它连接并从服务器获取脚本,然后运行它。缺点是每次运行应用程序时都需要下载和/或应用程序存储中的缓存机制。

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

    关于web-services - 移动策略 : How to handle this server-client version permutation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12573693/

    相关文章:

    php - 如何使用netsuite php工具包删除地址簿中的客户地址

    ios - 我什么时候想在 swift 2.2 中使用 static, final, private?

    vb.net用不同的接口(interface)实现策略模式

    c# - 如何为Web服务类型提供商设置用户名和密码?

    c# - WSDL 生成的代码未正确反序列化 XML 中的 long

    c# - 如何调试 soap web 服务?

    jquery - 使用 jQuery Mobile 1.4.4

    html - 手机上 td 周围的边框

    c# - LINQ 是否有类似 Match 的语法

    java - 如何避免用户代码需要了解和实例化策略模式中的具体策略