关于软件更新的一些问题?

问题1:
类似微信这样的安装在用户个人设备上的软件,调整了后端接口服务后,需要用户更新设备上的软件,如果用户没更新,还是能正常使用,一般这种是采取什么方案处理的?是调整后的接口服务,仍然支持旧版本的软件使用吗?

问题2:
假设我有个web系统,全国各地都有门店在使用,有些门店需要使用频繁更新后的web系统(),有些门店只需要偶尔更新web系统。这些门店使用的web系统都是同一个域名。有什么方案,在某次更新时,只对部分门店使用的web进行更新,其他还是仍然使用旧的web系统。

阅读 780
avatarAI BotBETA

问题1回答

类似微信这样的软件,在调整后端接口服务后,通常需要用户更新设备上的软件以保证最佳的用户体验和安全性。然而,为了照顾到那些没有及时更新的用户,开发者通常会采取以下策略:

  1. 版本兼容:调整后的接口服务会设计得兼容旧版本的软件,以便在一段时间内,新旧版本的用户都能正常使用。
  2. 逐步淘汰旧版本:随着时间的推移,开发者会逐步淘汰对旧版本的支持,最终强制用户更新到最新版本。
  3. 提醒用户更新:软件会在适当时机提醒用户更新,比如启动软件时、有重要功能更新时等。

所以,是的,调整后的接口服务往往会设计得兼容旧版本的软件使用,以便给用户足够的时间来更新他们的软件。

问题2回答

对于需要给部分门店使用的web系统进行更新的情况,可以考虑以下方案:

  1. 特性开关:在web系统中加入特性开关,通过配置开关来决定是否启用新功能或更新。对于需要频繁更新的门店,可以打开相关特性的开关;对于只需要偶尔更新的门店,保持开关关闭即可。
  2. 版本控制:为每个门店或门店群组分配不同的版本。当需要更新某个门店或门店群组的web系统时,只更新对应的版本。通过URL路由、请求头或后端逻辑来区分不同版本的请求,并返回对应版本的响应。
  3. 蓝绿部署或A/B测试:使用蓝绿部署或A/B测试的策略,同时运行新旧两个版本的web系统。通过负载均衡器将部分门店的请求路由到新版本,其他门店的请求路由到旧版本。这样可以逐步验证新版本的稳定性和效果,并逐步扩大新版本的使用范围。
  4. 门店配置:在web系统的配置中,为每个门店指定其使用的版本或功能集。根据门店的配置,web系统返回对应版本或功能集的响应。

这些方法可以根据实际情况灵活组合使用,以实现对部分门店使用的web系统进行更新的需求。

2 个回答
  1. 接口版本管理,比如目前 v1.0,那么接口就是 /api/v1/get/user
  2. 当新版本发布的时候,比如 v1.1,接口出现变化,就 增加 一个接口 /api/v1.1/get/user 提供新的功能。
  3. 但是 v1.0 的接口仍然提供服务。
  4. 通过统计 v1.0 客户端的占比,推送更新通知,让用户逐步升级到最新版。直到旧版没人使用,定一个截止日期,下线 v1.0 接口。
  5. 如果要根据用户属性提供不同服务,一般来说在业务代码里处理,不用上面的版本管理方式。

这么久没什么人回答,我来提点思路吧。

问题1:
类似微信这样的安装在用户个人设备上的软件,调整了后端接口服务后,需要用户更新设备上的软件,如果用户没更新,还是能正常使用,一般这种是采取什么方案处理的?是调整后的接口服务,仍然支持旧版本的软件使用吗?

接口一般都会有多个版本,各版本之间存在一定的兼容性。一般软件更新都需要考虑向下兼容一段时间。从接口来看,就是个版本,接口参数略有不同,但实际上在软件系统内部会涉及到大量的数据兼容、程序兼容的方案。所以看起来简单,实际上还是有点复杂。

越复杂的系统处理兼容性问题越麻烦。有一些软件,特别是游戏软件,通常都是强制更新,避免处理兼容性问题。其他软件也只是一定程度上的兼容,哪怕是 Windows,你现在在上面也很难跑得起很早以前的软件了。

问题2:
假设我有个web系统,全国各地都有门店在使用,有些门店需要使用频繁更新后的web系统(),有些门店只需要偶尔更新web系统。这些门店使用的web系统都是同一个域名。有什么方案,在某次更新时,只对部分门店使用的web进行更新,其他还是仍然使用旧的web系统。

接口版本有两种形式,一种是直接部署多个版本的接口,在链接地址上把版本号带上。需要调用哪个版本的接口就按地址去调用就行了。另外一种方式是,接口是同一个,但把版本号作为一个参数(或者数据项)传进去。

不管是哪种方式,在调用接口的时候,服务端都需要根据版本来做数据有效性验证。如果要限制不同的用户访问的接口版本,可以在用户认证(一般是登录)时根据后台保存的版本授权信息来识别,如果是不允许用户调用的版本,直接报错(比如 404 或者 403)就好。

推荐问题
logo
Microsoft
子站问答
访问
宣传栏