Associazioni di app per dispositivi mobili per Funzioni di AzureMobile Apps bindings for Azure Functions

Questo articolo descrive come usare le associazioni di app per dispositivi mobili in Funzioni di Azure.This article explains how to work with Azure Mobile Apps bindings in Azure Functions. Funzioni di Azure supporta le associazioni di input e output per App per dispositivi mobili.Azure Functions supports input and output bindings for Mobile Apps.

Le associazioni di app per dispositivi mobili consentono di leggere e aggiornare le tabelle di dati nelle app per dispositivi mobili.The Mobile Apps bindings let you read and update data tables in mobile apps.

Informazioni di riferimento per gli sviluppatori delle Funzioni di Azure.This is reference information for Azure Functions developers. Se non si ha familiarità con le Funzioni di Azure, iniziare con le seguenti risorse:If you're new to Azure Functions, start with the following resources:

InputInput

L'associazione di input di App per dispositivi mobili carica un record da un endpoint tabella per dispositivi mobili e lo passa alla propria funzione.The Mobile Apps input binding loads a record from a mobile table endpoint and passes it into your function. Nelle funzioni C# e F# eventuali modifiche apportate al record vengono automaticamente inviate alla tabella se la funzione termina correttamente.In C# and F# functions, any changes made to the record are automatically sent back to the table when the function exits successfully.

Input - esempioInput - example

Vedere l'esempio specifico per ciascun linguaggio:See the language-specific example:

Input - esempio di script C#Input - C# script example

L'esempio seguente mostra un'associazione di input dell'app per dispositivi mobili in un file function.json e una funzione script C# che usa l'associazione.The following example shows a Mobile Apps input binding in a function.json file and a C# script function that uses the binding. La funzione viene attivata da un messaggio in coda contenente un identificatore di record.The function is triggered by a queue message that has a record identifier. La funzione legge il record specificato e modifica la proprietà Text.The function reads the specified record and modifies its Text property.

Ecco i dati di associazione nel file 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"
    }
],
"disabled": false
}

Queste proprietà sono descritte nella sezione configuration.The configuration section explains these properties.

Ecco il codice 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.";
    }    
}

Input - JavaScriptInput - JavaScript

L'esempio seguente mostra un'associazione di input dell'app per dispositivi mobili in un file function.json e una funzione JavaScript che usa l'associazione.The following example shows a Mobile Apps input binding in a function.json file and a JavaScript function that uses the binding. La funzione viene attivata da un messaggio in coda contenente un identificatore di record.The function is triggered by a queue message that has a record identifier. La funzione legge il record specificato e modifica la proprietà Text.The function reads the specified record and modifies its Text property.

Ecco i dati di associazione nel file 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"
    }
],
"disabled": false
}

Queste proprietà sono descritte nella sezione configuration.The configuration section explains these properties.

Ecco il codice JavaScript:Here's the JavaScript code:

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

Input - attributiInput - attributes

Per funzioni in C# precompilato usare l'attributo MobileTable, definito nel pacchetto NuGet Microsoft.Azure.WebJobs.Extensions.MobileApps.For precompiled C# functions, use the MobileTable attribute, which is defined in NuGet package Microsoft.Azure.WebJobs.Extensions.MobileApps.

Per informazioni sulle proprietà degli attributi che è possibile configurare, vedere la sezione seguente relativa alla configurazione.For information about attribute properties that you can configure, see the following configuration section.

Input - configurazioneInput - configuration

Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json e nell'attributo MobileTable.The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

Proprietà di function.jsonfunction.json property Proprietà dell'attributoAttribute property DescrizioneDescription
typetype Deve essere impostato su "mobileTable"Must be set to "mobileTable"
directiondirection Deve essere impostato su "in"Must be set to "in"
nomename Nome del parametro di input nella firma della funzione.Name of input parameter in function signature.
tableNametableName TableNameTableName Nome della tabella di dati dell'app per dispositivi mobiliName of the mobile app's data table
idid IdId Identificatore del record da recuperare.The identifier of the record to retrieve. Può essere statico o basato sul trigger che richiama la funzione.Can be static or based on the trigger that invokes the function. Se, ad esempio, si usa un trigger della coda per la funzione, "id": "{queueTrigger}" userà il valore di stringa del messaggio della coda come ID del record da recuperare.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.
connessioneconnection ConnectionConnection Il nome di un'impostazione dell'app con l'URL dell'app per dispositivi mobili.The name of an app setting that has the mobile app's URL. La funzione usa questo URL per creare le operazioni REST da eseguire sull'app per dispositivi mobili.The function uses this URL to construct the required REST operations against your mobile app. Creare un'impostazione nell'app per le funzioni che contenga l'URL dell'app per dispositivi mobili e quindi specificare il nome dell'impostazione dell'app nella proprietà connection dell'associazione di input.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. L'URL ha l'aspetto seguente: http://<appname>.azurewebsites.net.The URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeyApiKey Il nome di un'impostazione dell'app con la chiave API dell'app per dispositivi mobili.The name of an app setting that has your mobile app's API key. Specificare la chiave API se si implementa una chiave API nell'app per dispositivi mobili Node.js oppure se si implementa una chiave API nell'app per dispositivi mobili .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. Per specificare la chiave, creare un'impostazione nell'app per le funzioni che contenga la chiave API e quindi aggiungere la proprietà apiKey nell'associazione di input con il nome dell'impostazione dell'app.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 si sviluppa in locale, le impostazioni dell'app vengono inserite nel file local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Importante

Non condividere la chiave API con i client dell'app per dispositivi mobili.Don't share the API key with your mobile app clients. Può essere distribuita in modo sicuro solo ai client sul lato servizio, come Funzioni di Azure.It should only be distributed securely to service-side clients, like Azure Functions. Funzioni di Azure archivia le informazioni di connessione e le chiavi API come impostazioni dell'app in modo che non vengano controllate nel repository di controllo del codice sorgente.Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. In questo modo viene garantita la protezione delle informazioni riservate.This safeguards your sensitive information.

Input - usoInput - usage

Quando nelle funzioni C# viene trovato, il record con l'ID specificato viene passato nel parametro denominato JObject.In C# functions, when the record with the specified ID is found, it is passed into the named JObject parameter. Se il record non viene trovato, il valore del parametro è null.When the record is not found, the parameter value is null.

Nelle funzioni JavaScript il record viene passato all'oggetto context.bindings.<name>.In JavaScript functions, the record is passed into the context.bindings.<name> object. Se il record non viene trovato, il valore del parametro è null.When the record is not found, the parameter value is null.

Nelle funzioni C# e F# eventuali modifiche apportate al record di input (parametro di input) vengono automaticamente inviate alla tabella quando la funzione termina correttamente.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. Non è possibile modificare un record nelle funzioni JavaScript.You can't modify a record in JavaScript functions.

OutputOutput

L'associazione di output di app per dispositivi mobili consente di scrivere un nuovo record in una tabella di app per dispositivi mobili.Use the Mobile Apps output binding to write a new record to a Mobile Apps table.

Output - esempioOutput - example

Vedere l'esempio specifico per ciascun linguaggio:See the language-specific example:

Output - esempio in C#Output - C# example

L'esempio seguente mostra una funzione in C# precompilato che viene attivata da un messaggio in coda e che crea un record in una tabella di app per dispositivi mobili.The following example shows a precompiled 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}" };
}

Output - esempio di script C#Output - C# script example

L'esempio seguente mostra un'associazione di output dell'app per dispositivi mobili in un file function.json e una funzione script C# che usa l'associazione.The following example shows a Mobile Apps output binding in a function.json file and a C# script function that uses the binding. La funzione viene attivata da un messaggio in coda e crea un nuovo record con valore hardcoded per la proprietà Text.The function is triggered by a queue message and creates a new record with hard-coded value for the Text property.

Ecco i dati di associazione nel file 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
}

Queste proprietà sono descritte nella sezione configuration.The configuration section explains these properties.

Ecco il codice 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}"
    };
}

Output - esempio JavaScriptOutput - JavaScript example

L'esempio seguente mostra un'associazione di output dell'app per dispositivi mobili in un file function.json e una funzione JavaScript che usa l'associazione.The following example shows a Mobile Apps output binding in a function.json file and a JavaScript function that uses the binding. La funzione viene attivata da un messaggio in coda e crea un nuovo record con valore hardcoded per la proprietà Text.The function is triggered by a queue message and creates a new record with hard-coded value for the Text property.

Ecco i dati di associazione nel file 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
}

Queste proprietà sono descritte nella sezione configuration.The configuration section explains these properties.

Ecco il codice 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();
};

Output - attributiOutput - attributes

Per funzioni in C# precompilato usare l'attributo MobileTable, definito nel pacchetto NuGet Microsoft.Azure.WebJobs.Extensions.MobileApps.For precompiled C# functions, use the MobileTable attribute, which is defined in NuGet package Microsoft.Azure.WebJobs.Extensions.MobileApps.

Per informazioni sulle proprietà degli attributi che è possibile configurare, vedere la sezione Output - configurazione.For information about attribute properties that you can configure, see Output - configuration. Di seguito è riportato un esempio dell'attributo MobileTable in una firma del metodo: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)
{
    ...
}

Per un esempio completo, vedere Output - esempio in C# precompilato.For a complete example, see Output - precompiled C# example.

Output - configurazioneOutput - configuration

Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json e nell'attributo MobileTable.The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

Proprietà di function.jsonfunction.json property Proprietà dell'attributoAttribute property DescrizioneDescription
typetype Deve essere impostato su "mobileTable"Must be set to "mobileTable"
directiondirection Deve essere impostato su "out"Must be set to "out"
nomename Nome del parametro di output nella firma della funzione.Name of output parameter in function signature.
tableNametableName TableNameTableName Nome della tabella di dati dell'app per dispositivi mobiliName of the mobile app's data table
connessioneconnection MobileAppUriSettingMobileAppUriSetting Il nome di un'impostazione dell'app con l'URL dell'app per dispositivi mobili.The name of an app setting that has the mobile app's URL. La funzione usa questo URL per creare le operazioni REST da eseguire sull'app per dispositivi mobili.The function uses this URL to construct the required REST operations against your mobile app. Creare un'impostazione nell'app per le funzioni che contenga l'URL dell'app per dispositivi mobili e quindi specificare il nome dell'impostazione dell'app nella proprietà connection dell'associazione di input.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. L'URL ha l'aspetto seguente: http://<appname>.azurewebsites.net.The URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeySettingApiKeySetting Il nome di un'impostazione dell'app con la chiave API dell'app per dispositivi mobili.The name of an app setting that has your mobile app's API key. Specificare la chiave API se si implementa una chiave API nel back-end dell'app per dispositivi mobili Node.js o se si implementa una chiave API nel back-end dell'app per dispositivi mobili .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. Per specificare la chiave, creare un'impostazione nell'app per le funzioni che contenga la chiave API e quindi aggiungere la proprietà apiKey nell'associazione di input con il nome dell'impostazione dell'app.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 si sviluppa in locale, le impostazioni dell'app vengono inserite nel file local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Importante

Non condividere la chiave API con i client dell'app per dispositivi mobili.Don't share the API key with your mobile app clients. Può essere distribuita in modo sicuro solo ai client sul lato servizio, come Funzioni di Azure.It should only be distributed securely to service-side clients, like Azure Functions. Funzioni di Azure archivia le informazioni di connessione e le chiavi API come impostazioni dell'app in modo che non vengano controllate nel repository di controllo del codice sorgente.Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. In questo modo viene garantita la protezione delle informazioni riservate.This safeguards your sensitive information.

Output - usoOutput - usage

Nelle funzioni script C# è necessario usare un parametro di output denominato di tipo out object per accedere al record di output.In C# script functions, use a named output parameter of type out object to access the output record. Nelle funzioni in C# precompilato l'attributo MobileTable può essere usato con uno qualsiasi dei tipi seguenti:In precompiled C# functions, the MobileTable attribute can be used with any of the following types:

  • ICollector<T> o IAsyncCollector<T>, dove T è JObject o qualsiasi tipo con una proprietà 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 o out T[], dove T è un tipo qualsiasi con una proprietà public string Id.out T or out T[], where T is any Type with a public string Id property.

Nelle funzioni Node.js si accede al record di output usando context.bindings.<name>.In Node.js functions, use context.bindings.<name> to access the output record.

Passaggi successiviNext steps