Azure Functions 的移动应用绑定

注释

Azure 移动应用绑定仅适用于 Azure Functions 1.x。 Azure Functions 2.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# 自动
门户开发 自动

Input

移动应用输入绑定从移动表终结点加载记录,并将其传递到函数中。 在 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 属性 Description
类型 n/a 必须设置为“mobileTable”
方向 n/a 必须设置为“in”
name n/a 函数签名中的输入参数的名称。
tableName 表名 移动应用的数据表的名称
id Id 要检索的记录的标识符。 可以是静态的,也可以基于调用函数的触发器。 例如,如果使用函数的队列触发器,则 "id": "{queueTrigger}" 使用队列消息的字符串值作为要检索的记录 ID。
连接 连接 具有移动应用 URL 的应用设置的名称。 该函数使用此 URL 针对移动应用构造所需的 REST作。 在包含移动应用 URL 的函数应用中创建应用设置,然后在输入绑定的属性中 connection 指定应用设置的名称。 URL 如下所示 https://<appname>.chinacloudsites.cn
apiKey ApiKey 具有移动应用 API 密钥的应用设置的名称。 如果在 Node.js 移动应用中实现 API 密钥,或在 .NET 移动应用中实现 API 密钥,请提供 API 密钥。 若要提供密钥,请在包含 API 密钥的函数应用中创建应用设置,然后使用应用设置的名称在输入绑定中添加 apiKey 属性。

在本地开发时,请在集合中的 local.settings.json 文件中Values添加应用程序设置。

重要

不要与移动应用客户端共享 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 属性 Description
类型 n/a 必须设置为“mobileTable”
方向 n/a 必须设置为“out”
name n/a 函数签名中的输出参数的名称。
tableName 表名 移动应用的数据表的名称
连接 MobileAppUriSetting 具有移动应用 URL 的应用设置的名称。 该函数使用此 URL 针对移动应用构造所需的 REST作。 在包含移动应用 URL 的函数应用中创建应用设置,然后在输入绑定的属性中 connection 指定应用设置的名称。 URL 如下所示 https://<appname>.chinacloudsites.cn
apiKey ApiKeySetting 具有移动应用 API 密钥的应用设置的名称。 如果在 Node.js 移动应用后端中实现 API 密钥,或在 .NET 移动应用后端中实现 API 密钥,请提供 API 密钥。 若要提供密钥,请在包含 API 密钥的函数应用中创建应用设置,然后使用应用设置的名称在输入绑定中添加 apiKey 属性。

在本地开发时,请在集合中的 local.settings.json 文件中Values添加应用程序设置。

重要

不要与移动应用客户端共享 API 密钥。 它应仅安全地分发到服务端客户端,例如 Azure Functions。 Azure Functions 将连接信息和 API 密钥存储为应用设置,以便不会将其签入源代码管理存储库。 这将保护敏感信息。

输出 - 使用情况

在 C# 脚本函数中,使用类型的 out object 命名输出参数访问输出记录。 在 C# 类库中,该 MobileTable 属性可用于以下任一类型:

  • ICollector<T>或者IAsyncCollector<T>,其中或TJObject具有属性的任何类型public string Id
  • out JObject
  • out T 或者 out T[],其中 T 具有属性的任何类型 public string Id

在 Node.js 函数中,用于 context.bindings.<name> 访问输出记录。

后续步骤