Ligações de aplicativos móveis para funções azureMobile Apps bindings for Azure Functions

Nota

As ligações das Aplicações Móveis Azure só estão disponíveis para as Funções Azure 1.x.Azure Mobile Apps bindings are only available to Azure Functions 1.x. Não são suportados nas Funções Azure 2.x e superiores.They are not supported in Azure Functions 2.x and higher.

Este artigo explica como trabalhar com ligações azure mobile apps em Funções Azure.This article explains how to work with Azure Mobile Apps bindings in Azure Functions. A Azure Functions suporta encadernações de entrada e saída para aplicações móveis.Azure Functions supports input and output bindings for Mobile Apps.

As ligações das Aplicações Móveis permitem-lhe ler e atualizar tabelas de dados em aplicações móveis.The Mobile Apps bindings let you read and update data tables in mobile apps.

Esta é uma informação de referência para desenvolvedores de Funções Azure.This is reference information for Azure Functions developers. Se for novo nas Funções Azure, comece com os seguintes recursos:If you're new to Azure Functions, start with the following resources:

Pacotes - Funções 1.xPackages - Functions 1.x

As ligações de aplicações móveis são fornecidas no pacote Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet, versão 1.x.Mobile Apps bindings are provided in the Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet package, version 1.x. O código fonte para o pacote está no repositório GitHub-extensões azure-webjobs-sdk.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

A tabela que se segue diz como adicionar apoio a esta encadernação em cada ambiente de desenvolvimento.The following table tells how to add support for this binding in each development environment.

Ambiente de programaçãoDevelopment environment Para adicionar apoio emTo add support in
Funções 1.xFunctions 1.x
Desenvolvimento local - Biblioteca de classe C#Local development - C# class library Instale o pacoteInstall the package
Desenvolvimento local - C# script, JavaScript, F #Local development - C# script, JavaScript, F# AutomáticoAutomatic
Desenvolvimento do portalPortal development AutomáticoAutomatic

InputInput

A encadernação de entrada de Aplicativos Móveis carrega um registo a partir de um ponto final de mesa móvel e passa-o para a sua função.The Mobile Apps input binding loads a record from a mobile table endpoint and passes it into your function. Nas funções C# e F#, quaisquer alterações feitas ao registo são automaticamente enviadas de volta para a tabela quando a função sai com sucesso.In C# and F# functions, any changes made to the record are automatically sent back to the table when the function exits successfully.

Entrada - exemploInput - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Exemplo de argumento De Entrada - C#Input - C# script example

O exemplo seguinte mostra uma ligação de entrada de Aplicativos Móveis num ficheiro function.json e uma função de script C# que utiliza a ligação.The following example shows a Mobile Apps input binding in a function.json file and a C# script function that uses the binding. A função é desencadeada por uma mensagem de fila que tem um identificador de registo.The function is triggered by a queue message that has a record identifier. A função lê o registo Text especificado e modifica a sua propriedade.The function reads the specified record and modifies its Text property.

Aqui estão os dados vinculativos no ficheiro função.json:Here's the binding data in the function.json file:

{
"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"
    }
]
}

A secção de configuração explica estas propriedades.The configuration section explains these properties.

Aqui está o código de script C#:Here's the C# script code:

#r "Newtonsoft.Json"    
using Newtonsoft.Json.Linq;

public static void Run(string myQueueItem, JObject record)
{
    if (record != null)
    {
        record["Text"] = "This has changed.";
    }    
}

Entrada - JavaScriptInput - JavaScript

O exemplo seguinte mostra uma ligação de entrada de Aplicações Móveis num ficheiro function.json e uma função JavaScript que utiliza a ligação.The following example shows a Mobile Apps input binding in a function.json file and a JavaScript function that uses the binding. A função é desencadeada por uma mensagem de fila que tem um identificador de registo.The function is triggered by a queue message that has a record identifier. A função lê o registo Text especificado e modifica a sua propriedade.The function reads the specified record and modifies its Text property.

Aqui estão os dados vinculativos no ficheiro função.json:Here's the binding data in the function.json file:

{
"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"
    }
]
}

A secção de configuração explica estas propriedades.The configuration section explains these properties.

Aqui está o código JavaScript:Here's the JavaScript code:

module.exports = function (context, myQueueItem) {    
    context.log(context.bindings.record);
    context.done();
};

Entrada - atributosInput - attributes

Nas bibliotecas da classe C#,utilize o atributo MobileTable.In C# class libraries, use the MobileTable attribute.

Para obter informações sobre propriedades de atributo que possa configurar, consulte a seguinte secção de configuração.For information about attribute properties that you can configure, see the following configuration section.

Entrada - configuraçãoInput - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no MobileTable atributo.The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
tipotype n/dn/a Deve ser definido para "mobileTable"Must be set to "mobileTable"
direçãodirection n/dn/a Deve ser definido para "in"Must be set to "in"
nomename n/dn/a Nome do parâmetro de entrada na assinatura da função.Name of input parameter in function signature.
tableNametableName Nome de mesaTableName Nome da tabela de dados da aplicação móvelName of the mobile app's data table
IDid IdId O identificador do registo para recuperar.The identifier of the record to retrieve. Pode ser estática ou baseada no gatilho que invoca a função.Can be static or based on the trigger that invokes the function. Por exemplo, se utilizar um gatilho de "id": "{queueTrigger}" fila para a sua função, utilize o valor de cadeia da mensagem de fila como o ID de registo para recuperar.For example, if you use a queue trigger for your function, then "id": "{queueTrigger}" uses the string value of the queue message as the record ID to retrieve.
conexãoconnection ConexãoConnection O nome de uma definição de aplicação que tem o URL da aplicação móvel.The name of an app setting that has the mobile app's URL. A função utiliza este URL para construir as operações de REST necessárias contra a sua aplicação móvel.The function uses this URL to construct the required REST operations against your mobile app. Crie uma definição de aplicação na sua aplicação de função que connection contenha o URL da aplicação móvel e, em seguida, especifique o nome da definição de aplicação na propriedade na sua encadernação de entrada.Create an app setting in your function app that contains the mobile app's URL, then specify the name of the app setting in the connection property in your input binding. O URL http://<appname>.azurewebsites.netparece.The URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeyApiKey O nome de uma definição de aplicação que tem a chave API da sua aplicação móvel.The name of an app setting that has your mobile app's API key. Forneça a tecla API se implementar uma chave API na sua aplicação móvel Node.js,ou implementar uma chave API na sua aplicação móvel .NET.Provide the API key if you implement an API key in your Node.js mobile app, or implement an API key in your .NET mobile app. Para fornecer a chave, crie uma definição de aplicação na apiKey sua aplicação de função que contenha a chave API e, em seguida, adicione a propriedade na sua ligação de entrada com o nome da definição da aplicação.To provide the key, create an app setting in your function app that contains the API key, then add the apiKey property in your input binding with the name of the app setting.

Quando está a desenvolver-se localmente, as definições de aplicativos vão para o ficheiro local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Importante

Não partilhe a chave API com os seus clientes de aplicações móveis.Don't share the API key with your mobile app clients. Só deve ser distribuído de forma segura a clientes do lado do serviço, como as Funções Azure.It should only be distributed securely to service-side clients, like Azure Functions. A Azure Functions armazena as suas informações de ligação e as teclas API como configurações da aplicação para que não sejam verificadas no seu repositório de controlo de fonte.Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. Isto salvaguarda a sua informação sensível.This safeguards your sensitive information.

Entrada - utilizaçãoInput - usage

Nas funções C#, quando o registo com o ID especificado é encontrado, é passado para o parâmetro JObject.In C# functions, when the record with the specified ID is found, it is passed into the named JObject parameter. Quando o registo não é encontrado, nullo valor do parâmetro é .When the record is not found, the parameter value is null.

Nas funções JavaScript, o registo context.bindings.<name> é passado para o objeto.In JavaScript functions, the record is passed into the context.bindings.<name> object. Quando o registo não é encontrado, nullo valor do parâmetro é .When the record is not found, the parameter value is null.

Nas funções C# e F#, quaisquer alterações que efetuar no registo de entrada (parâmetro de entrada) são automaticamente enviadas de volta para a tabela quando a função sair com sucesso.In C# and F# functions, any changes you make to the input record (input parameter) are automatically sent back to the table when the function exits successfully. Não é possível modificar um registo nas funções JavaScript.You can't modify a record in JavaScript functions.

SaídaOutput

Utilize a ligação de saída de Aplicações Móveis para escrever um novo disco para uma tabela de Aplicações Móveis.Use the Mobile Apps output binding to write a new record to a Mobile Apps table.

Saída - exemploOutput - example

Consulte o exemplo específico da linguagem:See the language-specific example:

Saída - C# exemploOutput - C# example

O exemplo seguinte mostra uma função C# que é desencadeada por uma mensagem de fila e cria um registo numa tabela de aplicações móveis.The following example shows a C# function that is triggered by a queue message and creates a record in a mobile app table.

[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}" };
}

Exemplo de script C#Output - C# script example

O exemplo seguinte mostra uma ligação de saída de Aplicativos Móveis num ficheiro function.json e uma função de script C# que utiliza a ligação.The following example shows a Mobile Apps output binding in a function.json file and a C# script function that uses the binding. A função é desencadeada por uma mensagem de fila e cria Text um novo registo com valor codificado para a propriedade.The function is triggered by a queue message and creates a new record with hard-coded value for the Text property.

Aqui estão os dados vinculativos no ficheiro função.json:Here's the binding data in the function.json file:

{
"bindings": [
    {
    "name": "myQueueItem",
    "queueName": "myqueue-items",
    "connection":"",
    "type": "queueTrigger",
    "direction": "in"
    },
    {
    "name": "record",
    "type": "mobileTable",
    "tableName": "MyTable",
    "connection": "My_MobileApp_Url",
    "apiKey": "My_MobileApp_Key",
    "direction": "out"
    }
]
}

A secção de configuração explica estas propriedades.The configuration section explains these properties.

Aqui está o código de script C#:Here's the C# script code:

public static void Run(string myQueueItem, out object record)
{
    record = new {
        Text = $"I'm running in a C# function! {myQueueItem}"
    };
}

Saída - Exemplo JavaScriptOutput - JavaScript example

O exemplo seguinte mostra uma ligação de saída de Aplicativos Móveis num ficheiro function.json e uma função JavaScript que utiliza a ligação.The following example shows a Mobile Apps output binding in a function.json file and a JavaScript function that uses the binding. A função é desencadeada por uma mensagem de fila e cria Text um novo registo com valor codificado para a propriedade.The function is triggered by a queue message and creates a new record with hard-coded value for the Text property.

Aqui estão os dados vinculativos no ficheiro função.json:Here's the binding data in the function.json file:

{
"bindings": [
    {
    "name": "myQueueItem",
    "queueName": "myqueue-items",
    "connection":"",
    "type": "queueTrigger",
    "direction": "in"
    },
    {
    "name": "record",
    "type": "mobileTable",
    "tableName": "MyTable",
    "connection": "My_MobileApp_Url",
    "apiKey": "My_MobileApp_Key",
    "direction": "out"
    }
],
"disabled": false
}

A secção de configuração explica estas propriedades.The configuration section explains these properties.

Aqui está o código JavaScript:Here's the JavaScript code:

module.exports = function (context, myQueueItem) {

    context.bindings.record = {
        text : "I'm running in a Node function! Data: '" + myQueueItem + "'"
    }   

    context.done();
};

Saída - atributosOutput - attributes

Nas bibliotecas da classe C#,utilize o atributo MobileTable.In C# class libraries, use the MobileTable attribute.

Para obter informações sobre propriedades de atributo que possa configurar, consulte A Saída - configuração.For information about attribute properties that you can configure, see Output - configuration. Aqui está MobileTable um exemplo de atributo numa assinatura de método:Here's a MobileTable attribute example in a method signature:

[FunctionName("MobileAppsOutput")]        
[return: MobileTable(ApiKeySetting = "MyMobileAppKey", TableName = "MyTable", MobileAppUriSetting = "MyMobileAppUri")]
public static object Run(
    [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
    TraceWriter log)
{
    ...
}

Para um exemplo completo, consulte a saída - C# exemplo.For a complete example, see Output - C# example.

Saída - configuraçãoOutput - configuration

A tabela a seguir explica as propriedades de configuração de ligação que definiu no ficheiro função.json e no MobileTable atributo.The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

propriedade fun.jsonfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
tipotype n/dn/a Deve ser definido para "mobileTable"Must be set to "mobileTable"
direçãodirection n/dn/a Deve ser definido para "fora"Must be set to "out"
nomename n/dn/a Nome do parâmetro de saída na assinatura da função.Name of output parameter in function signature.
tableNametableName Nome de mesaTableName Nome da tabela de dados da aplicação móvelName of the mobile app's data table
conexãoconnection MobileAppuriSettingMobileAppUriSetting O nome de uma definição de aplicação que tem o URL da aplicação móvel.The name of an app setting that has the mobile app's URL. A função utiliza este URL para construir as operações de REST necessárias contra a sua aplicação móvel.The function uses this URL to construct the required REST operations against your mobile app. Crie uma definição de aplicação na sua aplicação de função que connection contenha o URL da aplicação móvel e, em seguida, especifique o nome da definição de aplicação na propriedade na sua encadernação de entrada.Create an app setting in your function app that contains the mobile app's URL, then specify the name of the app setting in the connection property in your input binding. O URL http://<appname>.azurewebsites.netparece.The URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeySettingApiKeySetting O nome de uma definição de aplicação que tem a chave API da sua aplicação móvel.The name of an app setting that has your mobile app's API key. Forneça a tecla API se implementar uma chave API no seu backend de aplicação móvel Node.js,ou implementar uma chave API no seu backend de aplicação móvel .NET.Provide the API key if you implement an API key in your Node.js mobile app backend, or implement an API key in your .NET mobile app backend. Para fornecer a chave, crie uma definição de aplicação na apiKey sua aplicação de função que contenha a chave API e, em seguida, adicione a propriedade na sua ligação de entrada com o nome da definição da aplicação.To provide the key, create an app setting in your function app that contains the API key, then add the apiKey property in your input binding with the name of the app setting.

Quando está a desenvolver-se localmente, as definições de aplicativos vão para o ficheiro local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Importante

Não partilhe a chave API com os seus clientes de aplicações móveis.Don't share the API key with your mobile app clients. Só deve ser distribuído de forma segura a clientes do lado do serviço, como as Funções Azure.It should only be distributed securely to service-side clients, like Azure Functions. A Azure Functions armazena as suas informações de ligação e as teclas API como configurações da aplicação para que não sejam verificadas no seu repositório de controlo de fonte.Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. Isto salvaguarda a sua informação sensível.This safeguards your sensitive information.

Saída - utilizaçãoOutput - usage

Nas funções do script C#, utilize out object um parâmetro de saída de tipo nomeado para aceder ao registo de saída.In C# script functions, use a named output parameter of type out object to access the output record. Nas bibliotecas da MobileTable classe C#, o atributo pode ser utilizado com qualquer um dos seguintes tipos:In C# class libraries, the MobileTable attribute can be used with any of the following types:

  • ICollector<T>ou, IAsyncCollector<T> T onde JObject é ou qualquer public string Id tipo com uma propriedade.ICollector<T> or IAsyncCollector<T>, where T is either JObject or any type with a public string Id property.
  • out JObject
  • out Tou, out T[] T onde está qualquer public string Id Tipo com uma propriedade.out T or out T[], where T is any Type with a public string Id property.

Nas funções Node.js, utilize context.bindings.<name> para aceder ao registo de saída.In Node.js functions, use context.bindings.<name> to access the output record.

Passos seguintesNext steps