移动应用和移动服务中的客户端与服务器版本控制

Azure 移动服务的最新版本是 Azure 应用服务的移动应用功能。

移动应用客户端和服务器 SDK 最初基于移动服务中的 SDK,但它们彼此 兼容。 也就是说,必须将移动应用客户端 SDK 与移动应用服务器 SDK 配合使用,移动服务也是如此。 可以通过客户端和服务器 SDK 使用的特殊标头值 ZUMO-API-VERSION来强制实施此合约。

注意:每当本文档提到 移动服务 后端时,该后端不一定要托管在移动服务中。 现在,可以将移动服务迁移到应用服务上运行,而无需更改任何代码,但服务还是使用移动服务 SDK 版本。

标头规范

可以在 HTTP 标头或查询字符串中指定键 ZUMO-API-VERSION。值为版本字符串,格式为 x.y.z

例如:

GET https://service.chinacloudsites.cn/tables/TodoItem

HEADERS: ZUMO-API-VERSION: 2.0.0

POST https://service.chinacloudsites.cn/tables/TodoItem?ZUMO-API-VERSION=2.0.0

选择不进行版本检查

可以将应用设置“MS_SkipVersionCheck” 的值设置为“true”,选择不进行版本检查。 在 web.config 中或在 Azure 门户的“应用程序设置”部分中可以指定此设置。

Note

移动服务和移动应用之间有许多行为发生了变化,尤其是在脱机同步、身份验证和推送通知方面。 应在完成测试之后才选择不要进行版本检查,以确保这些行为的更改不会影响应用功能。

所有版本的兼容性摘要

下图显示了所有客户端与服务器类型之间的兼容性。 后端根据使用的服务器 SDK 分类为移动服务或移动应用。

移动服务 Node.js 或 .NET 移动应用 Node.js 或 .NET
移动服务客户端 正常 错误*
移动应用客户端 错误* 正常

*这可通过指定 MS_SkipVersionCheck 来控制。

移动服务客户端和服务器

下表中的客户端 SDK 与移动服务兼容。

注意:移动服务客户端 SDK 不发送 ZUMO-API-VERSION 的标头值。 如果服务收到此标头或查询字符串值,则返回错误,除非已按上述明确选择不要进行检查。

移动 服务 客户端 SDK

客户端平台 版本 版本标头值
托管客户端(Windows、Xamarin) 1.3.2 不适用
iOS 2.2.2 不适用
Android 2.0.3 不适用
HTML 1.2.7 不适用

移动 服务 服务器 SDK

服务器平台 版本 接受的版本标头
.NET WindowsAzure.MobileServices.Backend.* 版本 1.0.x 无版本标头
Node.js (即将推出) 无版本标头

移动服务后端的行为

ZUMO-API-VERSION MS_SkipVersionCheck 的值 响应
未指定 任意 200 - 正常
任何值 True 200 - 正常
任何值 False/未指定 400 - 错误的请求

Azure 移动应用客户端和服务器

移动 应用 客户端 SDK

版本检查从 Azure 移动应用以下版本的客户端 SDK 开始引入:

客户端平台 版本 版本标头值
托管客户端(Windows、Xamarin) 2.0.0 2.0.0
iOS 3.0.0 2.0.0
Android 3.0.0 3.0.0

移动 应用 服务器 SDK

以下服务器 SDK 版本包含版本检查:

服务器平台 SDK 中 IsInRole 中的声明 接受的版本标头
.NET Microsoft.Azure.Mobile.Server 2.0.0
Node.js azure-mobile-apps) 2.0.0

移动应用后端的行为

ZUMO-API-VERSION MS_SkipVersionCheck 的值 响应
x.y.z 或 Null True 200 - 正常
Null False/未指定 400 - 错误的请求
1.x.y False/未指定 400 - 错误的请求
2.0.0-2.x.y False/未指定 200 - 正常
3.0.0-3.x.y False/未指定 400 - 错误的请求