【问题标题】:Versioning in device/server development设备/服务器开发中的版本控制
【发布时间】:2011-08-03 17:43:39
【问题描述】:
我正在开发设备应用程序,我们将在设备上部署一些最小的设备特定代码,并且该组件将从我们的后端服务器动态加载其余资源(javascript、图像等)。这样我们就可以更频繁地升级应用程序,而不会过多地依赖设备升级。在某种程度上,这类似于一些 iphone 开发者希望通过更快的升级来避免应用审批周期。
设备中的代码应该能够检测到服务器代码上的新升级,但仅限于我们需要升级设备代码时,因此我们可以支持分阶段推出(升级10%的设备一次,等等)。
我相信有些人已经这样做了。您能分享一下您对此的想法和最佳实践吗?
【问题讨论】:
标签:
javascript
iphone
web-services
versioning
【解决方案1】:
一种方法是让应用程序有一个轮询进程,询问服务器是否有特定资源的新版本。
然后,服务器可以完全控制谁获得升级以及谁没有升级(“phone-home”的一部分可能包括当前版本),这将允许您强制执行“只有 X% 的客户端获得升级”的能力。您可能还希望添加“降级”功能,以便在前 10% 中发现太多错误时可以回滚。
这本质上是网络浏览器在缓存中有资源但可能已过期时所做的事情。他们说“嘿,服务器,我有这个资源,我在 XYZ 日期从你那里得到的。如果它改变了,给我一个新的,如果没有,让我知道。”并且服务器要么发回“未更改”响应,要么发回“这是新的”响应。