【问题标题】:Google App Engine version URL and app VersioningGoogle App Engine 版本 URL 和应用版本控制
【发布时间】:2014-07-20 15:41:32
【问题描述】:

当您将新版本上传到应用引擎时,我们称之为“10”,您可以使用此 url 直接向该版本发送请求:http://10.myapp.appspot.com

我发现它非常有用,我养成了发布我的 android 应用程序指向相应服务器版本的习惯。因此,当我将第 10 版上传到 Play 商店时,它指向 http://10.myapp.appspot.com,第 9 版也是如此:http://9.myapp.appspot.com

这是正确的用法还是这个功能?在 App Engine 中进行版本控制的最佳做法是什么?

我这样做是因为我想保持向后兼容性,这样如果我在服务器中进行更改,旧客户端将不会注意到它,因为它们连接到旧版本。

我知道这是有问题的,因为所有版本共享同一个数据库,以及当我为不适用于其他版本的默认版本配置预热时可能出现的问题。 那么我这样使用是不是搞错了?

【问题讨论】:

  • 除此之外,这可能会稍微贵一些,因为我想每个版本都需要一个实例集,而不是所有请求共享所有实例。
  • 是的,你是对的。但这比我升级服务器时用户可能遇到的错误要少得多,但他仍然使用旧版本的应用程序。

标签: android google-app-engine


【解决方案1】:

应用程序版本对于在“实时”部署新版本之前测试新版本非常有用。我不会使用它来确保与现有客户端的向后兼容性。此外,每个应用程序只能拥有有限数量的版本。

每个应用程序最多可以有十个版本;达到该限制后,您需要先删除现有版本,然后才能部署新版本。

要考虑的另一件事是,某些 App Engine 服务(例如 Datastore)独立于特定版本,而其他服务(例如 Cron 作业)则与具体版本紧密相关(通常是默认版本,除非另有说明)。

但是,您可以拥有不同版本的应用程序公共接口(REST/SOAP 服务或您使用的任何服务),以便新功能或更改仅适用于各自的客户端。

这是一个使用版本的虚拟 REST API 示例。

https://myapp.com/api/v1/questions/10/answers?max=10

https://myapp.com/api/v2/questions/10/latest-10-answers

【讨论】:

  • 这是个好主意。十个版本不会打扰我,因为我相信用户会更新应用程序,但是,如果有人真的不想更新或无法更新,这是一个很好的观点。还有什么你认为这是不好的做法的想法吗?
  • 我添加了另一件事要考虑。
  • 是的,这是一个很好的考虑,但我可以为 cron 作业指定一个特定版本,这样就解决了这个问题。我在 android 和 java 服务器之间使用了一个共享库,并且我有版本常量,所以我可以将它传递给 cron 作业(虽然我从未使用过 cron 作业,所以我不确定)。
  • 我真的很喜欢 API 版本控制,我想我可能会适应它
  • 太棒了。无论如何,如果它帮助您解决了问题,请将答案标记为已接受,以便其他人受益。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多