服务端兼容多个不一样APP版本

www.cnblogs.com/yeyun/p/628…

一、实现目标html

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

二、解决思路api

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

三、常见的方案app

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

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

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

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

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

      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

1
2
3
4
5
6
7
8
9
10
11
12
[
{
"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"
}
]

五、app版本的数量

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

相关文章
相关标签/搜索