Associações de Aplicativos Móveis para o Azure FunctionsMobile Apps bindings for Azure Functions

Observação

Associações de aplicativos móveis do Azure só estão disponíveis para o Azure Functions 1.x.Azure Mobile Apps bindings are only available to Azure Functions 1.x. Eles não têm suporte no Azure Functions 2. x e superior.They are not supported in Azure Functions 2.x and higher.

Este artigo explica como trabalhar com associações dos Aplicativos Móveis do Azure no Azure Functions.This article explains how to work with Azure Mobile Apps bindings in Azure Functions. O Azure Functions dá suporte a associações de entrada e saída para os Aplicativos Móveis.Azure Functions supports input and output bindings for Mobile Apps.

As associações dos Aplicativos Móveis permitem ler e atualizar tabelas de dados em aplicativos móveis.The Mobile Apps bindings let you read and update data tables in mobile apps.

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

Pacotes - Functions 1. xPackages - Functions 1.x

As ligações de aplicativos para dispositivos móveis são fornecidas no pacote do 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 do pacote está no repositório GitHub azure-webjobs-sdk-extensions.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

A tabela a seguir informa como adicionar suporte para essa associação em cada ambiente de desenvolvimento.The following table tells how to add support for this binding in each development environment.

Ambiente de desenvolvimentoDevelopment environment Para adicionar suporte emTo add support in
Funções 1.xFunctions 1.x
Desenvolvimento local - biblioteca de classes do C#Local development - C# class library Instalar o pacoteInstall the package
Desenvolvimento local - Script do C#, JavaScript, F#Local development - C# script, JavaScript, F# AutomáticoAutomatic
Desenvolvimento de portalPortal development AutomáticoAutomatic

EntradaInput

A associação de entrada dos Aplicativos Móveis carrega um registro de um ponto de extremidade de tabela móvel e o passa para a função.The Mobile Apps input binding loads a record from a mobile table endpoint and passes it into your function. Em funções do C# ou do F#, todas as alterações feitas no registro são enviadas novamente de forma automática para a tabela quando a função é fechada com êxito.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 a um idioma:See the language-specific example:

Entrada - exemplo de script C#Input - C# script example

O exemplo a seguir mostra uma associação de entrada dos Aplicativos Móveis em um arquivo function.json e uma função script C# que usa a associaçã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 é disparada por uma mensagem da fila que possui um identificador de registro.The function is triggered by a queue message that has a record identifier. A função lê o registro especificado e modifica sua propriedade Text.The function reads the specified record and modifies its Text property.

Aqui estão os dados de associação no arquivo function.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 seção configuração explica essas propriedades.The configuration section explains these properties.

Aqui está o código de script do 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 a seguir mostra uma associação de entrada dos Aplicativos Móveis em um arquivo function.json e uma função JavaScript que usa a associaçã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 é disparada por uma mensagem da fila que possui um identificador de registro.The function is triggered by a queue message that has a record identifier. A função lê o registro especificado e modifica sua propriedade Text.The function reads the specified record and modifies its Text property.

Aqui estão os dados de associação no arquivo function.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 seção configuração explica essas 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

Em bibliotecas de classes do C#, use o atributo MobileTable.In C# class libraries, use the MobileTable attribute.

Para saber informações sobre propriedades de atributo que podem ser configuradas, consulte a seção de configuração a seguir.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 associação que você define no arquivo function.json e no atributo MobileTable.The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

Propriedade function.jsonfunction.json property Propriedade de atributoAttribute property DescriptionDescription
tipotype N/Dn/a Deve ser definido como "mobileTable"Must be set to "mobileTable"
directiondirection N/Dn/a Deve ser definido como "in"Must be set to "in"
namename N/Dn/a Nome do parâmetro de entrada na assinatura de função.Name of input parameter in function signature.
tableNametableName TableNameTableName Nome da tabela de dados do aplicativo móvelName of the mobile app's data table
idid IdId O identificador exclusivo do registro a ser recuperado.The identifier of the record to retrieve. Pode ser estático ou se basear no gatilho que invoca a função.Can be static or based on the trigger that invokes the function. Por exemplo, se você usar um gatilho da fila para sua função, o "id": "{queueTrigger}" usará o valor de cadeia de caracteres da mensagem da fila como a ID de registro a ser recuperada.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 configuração de aplicativo que tem a URL do aplicativo móvel.The name of an app setting that has the mobile app's URL. A função usa essa URL para construir as operações REST necessárias no aplicativo móvel.The function uses this URL to construct the required REST operations against your mobile app. Crie uma configuração de aplicativo no aplicativo de funções que contenha a URL do aplicativo móvel e especifique o nome da configuração do aplicativo na propriedade connection na associaçã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. A URL é semelhante a http://<appname>.azurewebsites.net.The URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeyApiKey O nome de uma configuração de aplicativo que tem a chave de API do seu aplicativo móvel.The name of an app setting that has your mobile app's API key. Forneça a chave de API se implementar uma chave de API no aplicativo móvel do Node.js ou se implementar uma chave de API no aplicativo móvel do .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 configuração de aplicativo no aplicativo de funções que contém a chave de API e adicione a propriedade apiKey na associação de entrada ao nome da configuração do aplicativo.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 você estiver desenvolvendo localmente, as configurações de aplicativo serão adicionadas ao arquivo local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Importante

Não compartilhe a chave de API com seus clientes de aplicativo móvel.Don't share the API key with your mobile app clients. Ela só deve ser distribuída com segurança aos clientes do lado do serviço, como o Azure Functions.It should only be distributed securely to service-side clients, like Azure Functions. O Azure Functions armazena suas informações de conexão e as chaves de API como configurações de aplicativo, para que elas não sejam inseridas no repositório de controle do código-fonte.Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. Isso protege as informações confidenciais.This safeguards your sensitive information.

Entrada - usoInput - usage

Em funções do C#, quando o registro com a ID especificada for encontrado, ele é passado para o parâmetro chamado JObject.In C# functions, when the record with the specified ID is found, it is passed into the named JObject parameter. Quando o registro não é encontrado, o valor do parâmetro é null.When the record is not found, the parameter value is null.

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

Nas funções do C# ou do F#, todas as alterações feitas no registro de entrada (parâmetro de entrada) são enviadas novamente de forma automática para a tabela quando a função é fechada com êxito.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 registro em funções do JavaScript.You can't modify a record in JavaScript functions.

SaídaOutput

Use a associação de saída dos Aplicativos Móveis para gravar um novo registro em um ponto de extremidade da tabela dos Aplicativos 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 a um idioma:See the language-specific example:

Saída - exemplo C#Output - C# example

O exemplo a seguir mostra uma função C# que é disparada por uma mensagem da fila e cria um registro em uma tabela do aplicativo móvel.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}" };
}

Saída - exemplo de script C#Output - C# script example

O exemplo a seguir mostra uma associação de saída dos Aplicativos Móveis em um arquivo function.json e uma função script C# que usa a associaçã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 é disparada por uma mensagem da fila e cria um novo registro com o valor inserido no código para a propriedade Text.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 de associação no arquivo function.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 seção configuração explica essas propriedades.The configuration section explains these properties.

Aqui está o código de script do 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 a seguir mostra uma associação de saída dos Aplicativos Móveis em um arquivo function.json e uma função do JavaScript que usa a associaçã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 é disparada por uma mensagem da fila e cria um novo registro com o valor inserido no código para a propriedade Text.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 de associação no arquivo function.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 seção configuração explica essas 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

Em bibliotecas de classes do C#, use o atributo MobileTable.In C# class libraries, use the MobileTable attribute.

Para saber informações sobre propriedades de atributo que podem ser configuradas, consulte Saída - configuração.For information about attribute properties that you can configure, see Output - configuration. Aqui está um exemplo de atributo MobileTable em uma 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 ver um exemplo completo, consulte Saída – exemplo de C#.For a complete example, see Output - C# example.

Saída - configuraçãoOutput - configuration

A tabela a seguir explica as propriedades de configuração de associação que você define no arquivo function.json e no atributo MobileTable.The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

Propriedade function.jsonfunction.json property Propriedade de atributoAttribute property DescriptionDescription
tipotype N/Dn/a Deve ser definido como "mobileTable"Must be set to "mobileTable"
directiondirection N/Dn/a Deve ser definido como "out"Must be set to "out"
namename N/Dn/a Nome do parâmetro de saída na assinatura de função.Name of output parameter in function signature.
tableNametableName TableNameTableName Nome da tabela de dados do aplicativo móvelName of the mobile app's data table
conexãoconnection MobileAppUriSettingMobileAppUriSetting O nome de uma configuração de aplicativo que tem a URL do aplicativo móvel.The name of an app setting that has the mobile app's URL. A função usa essa URL para construir as operações REST necessárias no aplicativo móvel.The function uses this URL to construct the required REST operations against your mobile app. Crie uma configuração de aplicativo no aplicativo de funções que contenha a URL do aplicativo móvel e especifique o nome da configuração do aplicativo na propriedade connection na associaçã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. A URL é semelhante a http://<appname>.azurewebsites.net.The URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeySettingApiKeySetting O nome de uma configuração de aplicativo que tem a chave de API do seu aplicativo móvel.The name of an app setting that has your mobile app's API key. Forneça a chave de API se implementar uma chave de API no back-end do aplicativo móvel do Node.js ou se implementar uma chave de API no back-end do aplicativo móvel do .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 configuração de aplicativo no aplicativo de funções que contém a chave de API e adicione a propriedade apiKey na associação de entrada ao nome da configuração do aplicativo.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 você estiver desenvolvendo localmente, as configurações de aplicativo serão adicionadas ao arquivo local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Importante

Não compartilhe a chave de API com seus clientes de aplicativo móvel.Don't share the API key with your mobile app clients. Ela só deve ser distribuída com segurança aos clientes do lado do serviço, como o Azure Functions.It should only be distributed securely to service-side clients, like Azure Functions. O Azure Functions armazena suas informações de conexão e as chaves de API como configurações de aplicativo, para que elas não sejam inseridas no repositório de controle do código-fonte.Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. Isso protege as informações confidenciais.This safeguards your sensitive information.

Saída - usoOutput - usage

Nas funções do script C#, use um parâmetro de saída nomeado do tipo out object para acessar o registro de saída.In C# script functions, use a named output parameter of type out object to access the output record. Em bibliotecas de classes C#, o atributo MobileTable pode ser usado 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>, onde T é JObject ou qualquer tipo com uma propriedade public string Id.ICollector<T> or IAsyncCollector<T>, where T is either JObject or any type with a public string Id property.
  • out JObject
  • out T ou out T[], onde T é qualquer Tipo com uma propriedade public string Id.out T or out T[], where T is any Type with a public string Id property.

Nas funções do Node.js, use context.bindings.<name> para acessar o registro de saída.In Node.js functions, use context.bindings.<name> to access the output record.

Próximos passosNext steps