zoukankan      html  css  js  c++  java
  • 服务端兼容多个不同APP版本

    1、实现目标

      发布第N版APP,不影响N版本之前APP的正常使用,不强制用户升级APP版本,兼容多个版本的APP的正常使用。

    2、解决思路

      服务端维护不同版本APP的api(例如版本参数 v1、v2、v3…),根据手机端传递的URL及版本信息,动态调用对应的api。

    3、常见的方案

      3.1 常见的URL请求传递版本信息的4中方式

                   url+版本参数: www.xxx.com/api.xxx?version=v1

            www.xxx.com/sys/user/getUserByName?version=v1.0

            www.xxx.com/sys/user/getUserByName?version=v2.0

                   url post: header中添加版本参数(类似token使用)

          url路径: www.xxx.com/v1.api.xxx。

            www.xxx.com/v1.0/sys/user/getUserByName

            www.xxx.com/v2.0/sys/user/getUserByName

                   二级域名: www.v1.xxx.com/api.xxx

            www.v1.0.xxx.com/sys/user/getUserByName

            www.v2.0xxx.com/sys/user/getUserByName

      3.2 服务器APP代码版本管理

          每个APP版本对应一个project,发布时独立部署不同版本的app。可以使用SVN分支功能管理不同版本的project。

          降低耦合性,杜绝版本之间的依赖,易于维护。版本独立部署,减少单个节点的负载压力。但是会出现大量重复代码。

        同一个project兼容不同APP版本的api。根据请求的版本信息的调用不同的api(常见的路由、请求转发方式)。

          减少重复代码的重复,但是不恰当的维护,容易造成代码的臃肿,增加版本之间依赖、bug,降低代码的可维护性,不支持每个版本独立部署。

    4 个人推荐

      二级域名 + 每个APP版本对应一个project。需求在变化,同时APP版本也在变化,同一个API会经过多人修改,原先精简的API随着时间的流逝变得臃肿,API之间过度依赖,修改某处代码,导致其它未知的错误,代码变得难以维护。因此隔离各个版本的APP代码是非常有用的。

      

      4.1APP端如何动态调用服务器的API

        每次APP启动时调用服务器版本api,获取url及版本信息。客户端根据系统默认的版本号version获取对应的URL。例如传递version为v2.0,则返回www.v2.0.xxx.com

    [
        {
            "name": "APP V1.0版本", 
            "version": "v1.0", 
            "url": "www.v1.0.xxx.com"
        }, 
        {
            "name": "APP V1.0版本", 
            "version": "v2.0", 
            "url": "www.v2.0.xxx.com"
        }
    ]
    

    5、app版本的数量

      维护的app版本过多,增加维护成本。对于一些过时的app版本、使用量较少的老版本、数据库不兼容、重大功能升级等建议强制用户升级。

  • 相关阅读:
    B树,B+树
    中断
    死锁
    无锁队列
    Cookie和Session
    分布式系统一致性
    c++ 标准库迭代器失效
    html5 app图片预加载
    html5 手机APP计算高度问题
    html5 750 REM JS换算方法
  • 原文地址:https://www.cnblogs.com/yeyun/p/6284491.html
Copyright © 2011-2022 走看看