Azure Functions 的移动应用绑定
注意
Azure 移动应用绑定仅适用于 Azure Functions 1.x。 Azure Functions 2.x 及更高版本不支持这些绑定。
重要
对 Azure Functions 运行时 1.x 版的支持将于 2026 年 9 月 14 日结束。 强烈建议将应用迁移到版本 4.x 以获得完全支持。
本文介绍如何在 Azure Functions 中使用 Azure 移动应用绑定。 Azure Functions 支持移动应用的输入和输出绑定。
使用移动应用绑定可以读取和更新移动应用中的数据表。
包 - Functions 1.x
Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet 包 1.x 版中提供了移动应用绑定。 azure-webjobs-sdk-extensions GitHub 存储库中提供了此包的源代码。
下表说明了如何在每个开发环境中添加对此绑定的支持。
开发环境 | 添加支持 Functions 1.x |
---|---|
本地开发 - C# 类库 | 安装包 |
本地开发 - C# 脚本、JavaScript、F# | 自动 |
门户开发 | 自动 |
输入
移动应用输入绑定从移动表终结点加载记录,并将其传递到函数中。 在 C# 函数和 F# 函数中,函数成功退出后,对记录所做的任何更改都会自动发送回表。
输入 - 示例
参阅语言特定的示例:
以下示例演示 function.json 文件中的一个移动应用输入绑定以及使用该绑定的 C# 脚本函数。 该函数由具有记录标识符的队列消息触发。 该函数读取指定的记录并修改其 Text
属性。
下面是 function.json 文件中的绑定数据:
{
"bindings": [
{
"name": "myQueueItem",
"queueName": "myqueue-items",
"connection": "",
"type": "queueTrigger",
"direction": "in"
},
{
"name": "record",
"type": "mobileTable",
"tableName": "MyTable",
"id": "{queueTrigger}",
"connection": "My_MobileApp_Url",
"apiKey": "My_MobileApp_Key",
"direction": "in"
}
]
}
配置部分解释了这些属性。
C# 脚本代码如下所示:
#r "Newtonsoft.Json"
using Newtonsoft.Json.Linq;
public static void Run(string myQueueItem, JObject record)
{
if (record != null)
{
record["Text"] = "This has changed.";
}
}
输入 - 特性
在 C# 类库中,使用 MobileTable 特性。
有关可以配置的特性属性的信息,请参阅下面的“配置”部分。
输入 - 配置
下表解释了在 function.json 文件和 MobileTable
特性中设置的绑定配置属性。
function.json 属性 | Attribute 属性 | 说明 |
---|---|---|
type | 不适用 | 必须设置为“mobileTable” |
direction | 不适用 | 必须设置为“in” |
name | 不适用 | 函数签名中的输入参数的名称。 |
tableName | TableName | 移动应用的数据表的名称 |
id | Id | 要检索的记录的标识符。 可以是静态的,也可以基于调用函数的触发器。 例如,如果对函数使用队列触发器,则 "id": "{queueTrigger}" 会使用队列消息的字符串值作为记录 ID 进行检索。 |
连接 | Connection | 包含移动应用 URL 的应用设置的名称。 该函数使用此 URL 为移动应用构造所需的 REST 操作。 首先在函数应用中创建应用设置,它包含移动应用的 URL,并在输入绑定的 connection 属性中指定应用设置的名称。 URL 类似于 https://<appname>.chinacloudsites.cn 。 |
apiKey | ApiKey | 包含移动应用 API 密钥的应用设置的名称。 若要在 Node.js 移动应用中实现 API 密钥,或在 .NET 移动应用中实现 API 密钥,请提供该 API 密钥。 为此,请提供该密钥,在函数应用中创建应用设置(包含 API 密钥),然后在输入绑定中添加具有应用设置名称的 apiKey 属性。 |
在本地开发时,请将应用程序设置添加到 Values
集合的 local.settings.json 文件。
重要
不要与移动应用客户端共享该 API 密钥。 应仅将其安全分布到服务端客户端,如 Azure Functions。 Azure Functions 会将连接信息和 API 密钥存储为应用设置,这样它们就不会在源代码管理储存库中进行检查。 这会保护敏感信息。
输入 - 用法
在 C# 函数中,当找到具有指定 ID 的记录时,该记录会传递到命名的 JObject 参数。 未找到该记录时,参数值为 null
。
在 JavaScript 函数中,该记录会传递给 context.bindings.<name>
对象。 未找到该记录时,参数值为 null
。
在 C# 函数和 F# 函数中,函数成功退出后,对输入记录(输入参数)所做的任何更改都会自动发回到表。 不能修改 JavaScript 函数中的记录。
输出
使用移动应用输出绑定将新记录写入移动应用表。
输出 - 示例
以下示例演示由队列消息触发,并在移动应用表中创建记录的 C# 函数。
[FunctionName("MobileAppsOutput")]
[return: MobileTable(ApiKeySetting = "MyMobileAppKey", TableName = "MyTable", MobileAppUriSetting = "MyMobileAppUri")]
public static object Run(
[QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
TraceWriter log)
{
return new { Text = $"I'm running in a C# function! {myQueueItem}" };
}
输出 - 特性
在 C# 类库中,使用 MobileTable 特性。
有关可以配置的特性属性的信息,请参阅输出 - 配置。 下面是某个方法签名中的 MobileTable
特性示例:
[FunctionName("MobileAppsOutput")]
[return: MobileTable(ApiKeySetting = "MyMobileAppKey", TableName = "MyTable", MobileAppUriSetting = "MyMobileAppUri")]
public static object Run(
[QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
TraceWriter log)
{
...
}
输出 - 配置
下表解释了在 function.json 文件和 MobileTable
特性中设置的绑定配置属性。
function.json 属性 | Attribute 属性 | 说明 |
---|---|---|
type | 不适用 | 必须设置为“mobileTable” |
direction | 不适用 | 必须设置为“out” |
name | 不适用 | 函数签名中的输出参数的名称。 |
tableName | TableName | 移动应用的数据表的名称 |
连接 | MobileAppUriSetting | 包含移动应用 URL 的应用设置的名称。 该函数使用此 URL 为移动应用构造所需的 REST 操作。 首先在函数应用中创建应用设置,它包含移动应用的 URL,并在输入绑定的 connection 属性中指定应用设置的名称。 URL 类似于 https://<appname>.chinacloudsites.cn 。 |
apiKey | ApiKeySetting | 包含移动应用 API 密钥的应用设置的名称。 若要在 Node.js 移动应用后端中实现 API 密钥,或在 .NET 移动应用后端中实现 API 密钥,请提供该 API 密钥。 为此,请提供该密钥,在函数应用中创建应用设置(包含 API 密钥),然后在输入绑定中添加具有应用设置名称的 apiKey 属性。 |
在本地开发时,请将应用程序设置添加到 Values
集合的 local.settings.json 文件。
重要
不要与移动应用客户端共享该 API 密钥。 应仅将其安全分布到服务端客户端,如 Azure Functions。 Azure Functions 会将连接信息和 API 密钥存储为应用设置,这样它们就不会在源代码管理储存库中进行检查。 这会保护敏感信息。
输出 - 用法
在 C# 脚本函数中,使用类型为 out object
的命名输出参数来访问输出记录。 在 C# 类库中,MobileTable
属性可与以下任何类型结合使用:
ICollector<T>
或IAsyncCollector<T>
,其中,T
为JObject
,或包含public string Id
属性的任何类型。out JObject
out T
或out T[]
,其中,T
为包含public string Id
属性的任何类型。
在 Node.js 函数中,使用 context.bindings.<name>
来访问输出记录。