服务端兼容多个不同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版本、使用量较少的老版本、数据库不兼容、重大功能升级等建议强制用户升级。

时间: 2024-12-22 13:36:50

服务端兼容多个不同APP版本的相关文章

网站的优化----首页优化---app调取服务端数据

高并发经常会发生在有大活跃用户量来访问网站的某个点,例如用户高聚集的业务场景中,如:抢购,促销等.为了让用户流畅的访问网站,来根据自己的业务设计适合系统的处理方案. //对于APP网站首页数据,通常是有APP请求服务端数据在本机进行绘制.APP越少的请求服务端的,就会减少服务器压力:资源和带宽. 1.服务端给APP下发的数据越少,减少无用字段的下发.就是APP需要什么,服务端下发什么. 2.APP每次请求服务端数据,服务端下发最新数据和数据版本号,APP可以缓存到本地,每次接口请求数据的时候,上

google支付服务端订单验证PHP代码

之前有转发一则关于google支付服务端验证的文章,今天把之前研究出得服务端订单支付验证代码(PHP版本)贴出来大家分享 在进行服务端交易验证之前,需要到google api consle后台https://console.developers.google.com开通google play developer api并获取请求api证书priket.p12文件: 交易状态API官方文档:https://developers.google.com/android-publisher/api-re

CnetOS 6.6 rsync 的服务端和客户端配置

CentOS 6.6 rsync 的服务端和客户端配置 基本信息 系统版本 主机名 IP地址 角色 CentOS  6.6 backup 10.0.0.10 rsync服务端 CentOS  6.6 lamp01 10.0.0.8 rsync客户端 CentOS  6.6 lnmp02 10.0.0.9 rsync客户端 服务端配置 创建rsync配置文件,并写入配置内容(默认rsync文件是不存在的,需要创建) [[email protected] ~]# touch/etc/rsyncd.c

搭建nfs共享存储服务之一nfs服务端搭建

NFS相当于房源,RPC相当于中介. nfs-utils:  NFS服务的主程序,包括rpc.nfsd.rpc.mountd这两个daemon和相关文件说明,以及执行命令文件等. rpcbind:  centos6.x下面RPC的主程序.NFS可以视为一个RPC程序,在启动任何一个RPC程序之前,需要做好端口和功能的对应映射工作,这个映射工作就是由rpcbind服务来完成的.因此,在提供NFS服务之前必须先启动rpcbind服务才行. 1.查看NFS软件包 : 可使用如下命令查看默认情况下cen

websocket 实现 前端vue-socket.io 服务端 koa2(socket.io)

前端:(vue项目,main.js) // The Vue build version to load with the `import` command // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from 'vue' import App from './App' import router from './router' // import VueNa

APP多版本共存,服务端如何兼容?

做过APP产品的技术人员都知道,APP应用属于一种C/S架构的,所以在做多版本兼容,升级等处理则比较麻烦,不像web应用那么容易.下面将带大家分析几种常见的情况和应对方式: 小改动或者新加功能的 这种情况,数据库结构和API程序一般是可以兼容多版本的,所以不用强制升级,可以坐到多版本共存. 尽量采用数据库层面新增字段和API的方式,应用程序层面就可以兼容了.当然,API层面也可以部署多个版本来同时提供,但这个不是必须的 但最重要的是数据库层面的表结构那些能够兼容到.  或者:  总结: 数据库层

微信app支付android客户端以及.net服务端实现

由于公司运营需要,需要在客户端(android/ios)增加微信以及支付宝支付,在调用微信app支付时遇到一些问题,也算是一些踩过的坑,记录下来 ,希望能对.net开发者服务端网站更快的集成微信app支付. 1.开发所需资料:微信开放平台应用的appid以及appsecert,商户平台的商户号以及api安全里面里面设置的key,详见 微信支付账户相关信息; 2.微信开发者平台完善应用平台的相关信息,android应用签名必须用打包签名过的发布版本apk(这一步很重用),包名必须一致,可以用微信提

App服务端架构变迁

随着移动互联网时代的到来,移动技术也随之飞速发展.如今,App已然成为绝大多数互联网企业用来获取用户的核心渠道.以往以PC为主要承载平台的各业务线,源源不断集成加入到移动项目中来,原本以产品为中心快速迭代的单一开发模式,已经无法应对这汹涌爆炸式的业务接入和高速增长.同时伴随着用户量的增长,流量的持续暴增,系统架构面临的一系列挑战和转型.怎么构建出高可靠.高扩展.低成本.多快好省系统体系架构已成为业界乐而不厌的长谈话题. 发展 2010年-2012年 2010年移动端刚刚兴起,公司组建了移动团队(

移动APP服务端API设计应该考虑到的问题

转载:http://www.hutuseng.com/article/how-to-design-api 2014年,移动APP的热度丝毫没有减退,怎样为您的移动端app设计良好的服务器端接口(API)呢? 下面谈谈我个人的一些想法. 2014年,移动APP的热度丝毫没有减退,并没有像桌面软件被WEB网站那样所取代,不但如此,越来越多的传统应用.网站也都开始制作自己的移动APP,也就是我们常说的IOS客户端.android客户端.这仿佛又回到了多年前的CS架构,那时候我们用VB.VC.Delph