Enlaces de Mobile Apps para Azure FunctionsMobile Apps bindings for Azure Functions

Nota

Los enlaces de Azure Mobile Apps solo están disponibles para Azure Functions 1.x.Azure Mobile Apps bindings are only available to Azure Functions 1.x. No se admiten en Azure Functions 2.x.They are not supported in Azure Functions 2.x.

En este artículo se explica cómo trabajar con enlaces de Azure Mobile Apps en Azure Functions.This article explains how to work with Azure Mobile Apps bindings in Azure Functions. Azure Functions admite enlaces de entrada y salida para Mobile Apps.Azure Functions supports input and output bindings for Mobile Apps.

Los enlaces de Mobile Apps permiten leer y actualizar las tablas de datos en las aplicaciones móviles.The Mobile Apps bindings let you read and update data tables in mobile apps.

Esta es la información de referencia para desarrolladores de Azure Functions.This is reference information for Azure Functions developers. Si está familiarizado con Azure Functions, comience con los siguientes recursos:If you're new to Azure Functions, start with the following resources:

Paquetes: Functions 1.xPackages - Functions 1.x

Los enlaces de Mobile Apps se proporcionan en el paquete NuGet Microsoft.Azure.WebJobs.Extensions.MobileApps, versión 1.x.Mobile Apps bindings are provided in the Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet package, version 1.x. El código fuente del paquete está en el repositorio azure-webjobs-sdk-extensions de GitHub.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

En la siguiente tabla se explica cómo agregar compatibilidad para este enlace en cada entorno de desarrollo.The following table tells how to add support for this binding in each development environment.

Entorno de desarrolloDevelopment environment Para agregar compatibilidad enTo add support in
Functions 1.xFunctions 1.x
Desarrollo local: biblioteca de clases C#Local development - C# class library Instalación del paqueteInstall the package
Desarrollo local: script de C#, JavaScript, F#Local development - C# script, JavaScript, F# AutomáticoAutomatic
Desarrollo con PortalPortal development AutomáticoAutomatic

EntradaInput

El enlace de entrada de Mobile Apps carga un registro desde un punto de conexión de tabla móvil y lo pasa a la función.The Mobile Apps input binding loads a record from a mobile table endpoint and passes it into your function. En funciones de C# y F#, los cambios realizados en el registro se enviarán automáticamente a la tabla una vez que la función se complete correctamente.In C# and F# functions, any changes made to the record are automatically sent back to the table when the function exits successfully.

Ejemplo de entradaInput - example

Vea el ejemplo específico del lenguaje:See the language-specific example:

Entrada: ejemplo de script de C#Input - C# script example

En el ejemplo siguiente se muestra un enlace de entrada de Mobile Apps en un archivo de function.json y una función de script de C# que usa el enlace.The following example shows a Mobile Apps input binding in a function.json file and a C# script function that uses the binding. Un mensaje de cola que tiene un identificador de registro desencadena la función.The function is triggered by a queue message that has a record identifier. La función lee el registro especificado y modifica su propiedad Text.The function reads the specified record and modifies its Text property.

Estos son los datos de enlace del archivo 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"
    }
]
}

En la sección de configuración se explican estas propiedades.The configuration section explains these properties.

Este es el código de script de 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

En el ejemplo siguiente se muestra un enlace de entrada de Mobile Apps en un archivo de function.json y una función de JavaScript que usa el enlace.The following example shows a Mobile Apps input binding in a function.json file and a JavaScript function that uses the binding. Un mensaje de cola que tiene un identificador de registro desencadena la función.The function is triggered by a queue message that has a record identifier. La función lee el registro especificado y modifica su propiedad Text.The function reads the specified record and modifies its Text property.

Estos son los datos de enlace del archivo 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"
    }
]
}

En la sección de configuración se explican estas propiedades.The configuration section explains these properties.

Este es el código de JavaScript:Here's the JavaScript code:

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

Entrada: atributosInput - attributes

En las bibliotecas de clases de C#, use el atributo MobileTable.In C# class libraries, use the MobileTable attribute.

Para información sobre las propiedades de atributo que puede configurar, consulte la sección de configuración siguiente.For information about attribute properties that you can configure, see the following configuration section.

Entrada: configuraciónInput - configuration

En la siguiente tabla se explican las propiedades de configuración de enlace que establece en el archivo function.json y el atributo MobileTable.The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

Propiedad de function.jsonfunction.json property Propiedad de atributoAttribute property DESCRIPCIÓNDescription
typetype Se debe establecer en "mobileTable"Must be set to "mobileTable"
direccióndirection Se debe establecer en "in"Must be set to "in"
namename Nombre del parámetro de entrada en la firma de la función.Name of input parameter in function signature.
tableNametableName TableNameTableName Nombre de la tabla de datos de la aplicación móvilName of the mobile app's data table
idid IdId El identificador único del registro que se va a recuperar.The identifier of the record to retrieve. Puede ser estático o se puede basar en el desencadenador que invoca la función.Can be static or based on the trigger that invokes the function. Por ejemplo, si usa un desencadenador de cola para la función, "id": "{queueTrigger}" usa el valor de cadena del mensaje de cola como el identificador de registro que se va a 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.
conexiónconnection ConnectionConnection El nombre de una configuración de aplicación que tiene la dirección URL de la aplicación móvil.The name of an app setting that has the mobile app's URL. La función utiliza esta dirección URL para construir las operaciones de REST necesarias en su aplicación móvil.The function uses this URL to construct the required REST operations against your mobile app. Cree una configuración de aplicación en la aplicación de función que contiene la dirección URL de la aplicación móvil y, luego, especifique el nombre de la configuración de la aplicación en la propiedad connection del enlace 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. La dirección URL tiene el aspecto siguiente: http://<appname>.azurewebsites.net.The URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeyApiKey El nombre de la configuración de una aplicación que tiene la clave de API de la aplicación móvil.The name of an app setting that has your mobile app's API key. Proporcione la clave de API si implementa una clave de API en la aplicación móvil Node.js o implemente una clave de API en la aplicación móvil .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 proporcionar la clave, cree una configuración de la aplicación en la aplicación de la función que contiene la clave de API y, luego, agregue la propiedad apiKey en el enlace de entrada con el nombre de la configuración de la aplicación.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.

Cuando desarrolla localmente, la configuración de aplicación pasa al archivo local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Importante

No comparta la clave de API con los clientes de aplicación móvil.Don't share the API key with your mobile app clients. Solo se debe distribuir de forma segura a los clientes del servicio, como Azure Functions.It should only be distributed securely to service-side clients, like Azure Functions. Azure Functions almacena la información de conexión y las claves de API como configuración de la aplicación de forma que no se protegen en el repositorio de control de código fuente.Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. Esto protege la información confidencial.This safeguards your sensitive information.

Uso de entradasInput - usage

En las funciones de C#, cuando se encuentra el registro con el identificador especificado, se pasa al parámetro JObject con nombre.In C# functions, when the record with the specified ID is found, it is passed into the named JObject parameter. Si el registro no se encuentra, el valor del parámetro es null.When the record is not found, the parameter value is null.

En las funciones de JavaScript, el registro se pasa en el objeto context.bindings.<name>.In JavaScript functions, the record is passed into the context.bindings.<name> object. Si el registro no se encuentra, el valor del parámetro es null.When the record is not found, the parameter value is null.

En funciones de C# y F#, los cambios realizados en el registro de entrada (parámetro de entrada) se devuelven automáticamente a la tabla cuando la función termina correctamente.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. No se puede modificar un registro en las funciones de JavaScript.You can't modify a record in JavaScript functions.

SalidaOutput

Use el enlace de salida de Mobile Apps para escribir un registro nuevo en una tabla de Mobile Apps.Use the Mobile Apps output binding to write a new record to a Mobile Apps table.

Salida: ejemploOutput - example

Vea el ejemplo específico del lenguaje:See the language-specific example:

Salida: ejemplo de C#Output - C# example

En el ejemplo siguiente se muestra una función de C# que se desencadena mediante un mensaje de cola y crea un registro en una tabla de aplicación móvil.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}" };
}

Salida: ejemplo de script de C#Output - C# script example

En el ejemplo siguiente se muestra un enlace de salida de Mobile Apps en un archivo de function.json y una función de script de C# que usa el enlace.The following example shows a Mobile Apps output binding in a function.json file and a C# script function that uses the binding. La función se desencadena mediante un mensaje de cola y crea un registro nuevo con un valor codificado de forma rígida para la propiedad Text.The function is triggered by a queue message and creates a new record with hard-coded value for the Text property.

Estos son los datos de enlace del archivo 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"
    }
]
}

En la sección de configuración se explican estas propiedades.The configuration section explains these properties.

Este es el código de script de 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}"
    };
}

Salida: ejemplo de JavaScriptOutput - JavaScript example

En el ejemplo siguiente se muestra un enlace de salida de Mobile Apps en un archivo de function.json y una función de JavaScript que usa el enlace.The following example shows a Mobile Apps output binding in a function.json file and a JavaScript function that uses the binding. La función se desencadena mediante un mensaje de cola y crea un registro nuevo con un valor codificado de forma rígida para la propiedad Text.The function is triggered by a queue message and creates a new record with hard-coded value for the Text property.

Estos son los datos de enlace del archivo 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
}

En la sección de configuración se explican estas propiedades.The configuration section explains these properties.

Este es el código de 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();
};

Salida: atributosOutput - attributes

En las bibliotecas de clases de C#, use el atributo MobileTable.In C# class libraries, use the MobileTable attribute.

Para información sobre las propiedades de atributo que puede configurar, consulte Salida: configuración.For information about attribute properties that you can configure, see Output - configuration. A continuación, se muestra un ejemplo del atributo MobileTable en una signatura 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 obtener un ejemplo completo, consulte Salida: ejemplo de C#.For a complete example, see Output - C# example.

Salida: configuraciónOutput - configuration

En la siguiente tabla se explican las propiedades de configuración de enlace que se definen en el archivo function.json y el atributo MobileTable.The following table explains the binding configuration properties that you set in the function.json file and the MobileTable attribute.

Propiedad de function.jsonfunction.json property Propiedad de atributoAttribute property DESCRIPCIÓNDescription
typetype Se debe establecer en "mobileTable"Must be set to "mobileTable"
direccióndirection Debe establecerse en "out"Must be set to "out"
namename Nombre del parámetro de salida en la firma de la función.Name of output parameter in function signature.
tableNametableName TableNameTableName Nombre de la tabla de datos de la aplicación móvilName of the mobile app's data table
conexiónconnection MobileAppUriSettingMobileAppUriSetting El nombre de una configuración de aplicación que tiene la dirección URL de la aplicación móvil.The name of an app setting that has the mobile app's URL. La función utiliza esta dirección URL para construir las operaciones de REST necesarias en su aplicación móvil.The function uses this URL to construct the required REST operations against your mobile app. Cree una configuración de aplicación en la aplicación de función que contiene la dirección URL de la aplicación móvil y, luego, especifique el nombre de la configuración de la aplicación en la propiedad connection del enlace 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. La dirección URL tiene el aspecto siguiente: http://<appname>.azurewebsites.net.The URL looks like http://<appname>.azurewebsites.net.
apiKeyapiKey ApiKeySettingApiKeySetting El nombre de la configuración de una aplicación que tiene la clave de API de la aplicación móvil.The name of an app setting that has your mobile app's API key. Proporcione la clave de API si implementa una clave de API en el back-end de aplicación móvil de Node.js o implementa una clave de API en el back-end de aplicación móvil de .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 proporcionar la clave, cree una configuración de la aplicación en la aplicación de la función que contiene la clave de API y, luego, agregue la propiedad apiKey en el enlace de entrada con el nombre de la configuración de la aplicación.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.

Cuando desarrolla localmente, la configuración de aplicación pasa al archivo local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Importante

No comparta la clave de API con los clientes de aplicación móvil.Don't share the API key with your mobile app clients. Solo se debe distribuir de forma segura a los clientes del servicio, como Azure Functions.It should only be distributed securely to service-side clients, like Azure Functions. Azure Functions almacena la información de conexión y las claves de API como configuración de la aplicación de forma que no se protegen en el repositorio de control de código fuente.Azure Functions stores your connection information and API keys as app settings so that they are not checked into your source control repository. Esto protege la información confidencial.This safeguards your sensitive information.

Uso de salidasOutput - usage

En funciones de script de C#, use un parámetro de salida con nombre de tipo out object para acceder al registro de salida.In C# script functions, use a named output parameter of type out object to access the output record. En las bibliotecas de clases de C#, el atributo MobileTable se puede usar con cualquiera de los tipos siguientes:In C# class libraries, the MobileTable attribute can be used with any of the following types:

  • ICollector<T> o IAsyncCollector<T>, donde T es JObject o cualquier tipo con una propiedad 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[], donde T es cualquier tipo con una propiedad public string Id.out T or out T[], where T is any Type with a public string Id property.

En las funciones de Node.js, use context.bindings.<name> para acceder al registro de salida.In Node.js functions, use context.bindings.<name> to access the output record.

Pasos siguientesNext steps