Powiązania usługi Mobile Apps dla usługi Azure Functions

Uwaga

Powiązania usługi Azure Mobile Apps są dostępne tylko dla usługi Azure Functions 1.x. Nie są one obsługiwane w usłudze Azure Functions w wersji 2.x i nowszej.

W tym artykule wyjaśniono, jak pracować z powiązaniami usługi Azure Mobile Apps w usłudze Azure Functions. Usługa Azure Functions obsługuje powiązania wejściowe i wyjściowe dla usługi Mobile Apps.

Powiązania usługi Mobile Apps umożliwiają odczytywanie i aktualizowanie tabel danych w aplikacjach mobilnych.

Pakiety — Functions 1.x

Powiązania usługi Mobile Apps są dostępne w pakiecie NuGet Microsoft.Azure.WebJobs.Extensions.MobileApps w wersji 1.x. Kod źródłowy pakietu znajduje się w repozytorium GitHub azure-webjobs-sdk-extensions .

W poniższej tabeli przedstawiono sposób dodawania obsługi tego powiązania w każdym środowisku projektowym.

Środowisko projektowe Aby dodać obsługę w programie
Functions w wersji 1.x
Programowanie lokalne — biblioteka klas języka C# Instalowanie pakietu
Programowanie lokalne — skrypt języka C#, JavaScript, F# Automatyczne
Programowanie w portalu Automatyczne

Dane wejściowe

Powiązanie wejściowe usługi Mobile Apps ładuje rekord z punktu końcowego tabeli mobilnej i przekazuje go do funkcji. W funkcjach C# i F# wszelkie zmiany wprowadzone w rekordzie są automatycznie wysyłane z powrotem do tabeli po pomyślnym zakończeniu działania funkcji.

Dane wejściowe — przykład

Zobacz przykład specyficzny dla języka:

W poniższym przykładzie pokazano powiązanie wejściowe usługi Mobile Apps w pliku function.json i funkcję skryptu języka C#, która używa powiązania. Funkcja jest wyzwalana przez komunikat kolejki, który ma identyfikator rekordu. Funkcja odczytuje określony rekord i modyfikuje jego Text właściwość.

Oto dane powiązania w pliku 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"
    }
]
}

W sekcji konfiguracji opisano te właściwości.

Oto kod skryptu języka C#:

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

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

Dane wejściowe — atrybuty

W bibliotekach klas języka C# użyj atrybutu MobileTable .

Aby uzyskać informacje o właściwościach atrybutów, które można skonfigurować, zobacz następującą sekcję konfiguracji.

Dane wejściowe — konfiguracja

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json i atrybutu MobileTable .

właściwość function.json Właściwość atrybutu opis
type nie dotyczy Musi być ustawiona wartość "mobileTable"
direction nie dotyczy Musi być ustawiona wartość "in"
name nie dotyczy Nazwa parametru wejściowego w podpisie funkcji.
Tablename TableName Nazwa tabeli danych aplikacji mobilnej
id Id Identyfikator rekordu do pobrania. Może być statyczny lub oparty na wyzwalaczu, który wywołuje funkcję. Jeśli na przykład używasz wyzwalacza kolejki dla funkcji, do "id": "{queueTrigger}" pobrania użyjesz wartości ciągu komunikatu kolejki jako identyfikatora rekordu.
Połączenia Połączenie Nazwa ustawienia aplikacji, które ma adres URL aplikacji mobilnej. Funkcja używa tego adresu URL do konstruowania wymaganych operacji REST względem aplikacji mobilnej. Utwórz ustawienie aplikacji w aplikacji funkcji zawierającej adres URL aplikacji mobilnej, a następnie określ nazwę ustawienia aplikacji we właściwości w powiązaniu connection wejściowym. Adres URL wygląda następująco: https://<appname>.azurewebsites.net.
apiKey ApiKey Nazwa ustawienia aplikacji, które ma klucz interfejsu API aplikacji mobilnej. Podaj klucz interfejsu API, jeśli zaimplementujesz klucz interfejsu API w aplikacji mobilnej Node.js lub zaimplementujesz klucz interfejsu API w aplikacji mobilnej platformy .NET. Aby podać klucz, utwórz ustawienie aplikacji w aplikacji funkcji zawierającej klucz interfejsu API, a następnie dodaj apiKey właściwość w powiązaniu wejściowym z nazwą ustawienia aplikacji.

Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values .

Ważne

Nie udostępniaj klucza interfejsu API klientom aplikacji mobilnej. Powinny być bezpiecznie dystrybuowane tylko do klientów po stronie usługi, takich jak Usługa Azure Functions. Usługa Azure Functions przechowuje informacje o połączeniu i klucze interfejsu API jako ustawienia aplikacji, aby nie były zaewidencjonowane w repozytorium kontroli źródła. Chroni to poufne informacje.

Dane wejściowe — użycie

W funkcjach języka C#, gdy rekord o określonym identyfikatorze zostanie znaleziony, zostanie przekazany do nazwanego parametru JObject . Gdy rekord nie zostanie znaleziony, wartość parametru to null.

W funkcjach języka JavaScript rekord jest przekazywany do context.bindings.<name> obiektu. Gdy rekord nie zostanie znaleziony, wartość parametru to null.

W funkcjach C# i F# wszelkie zmiany wprowadzone w rekordzie wejściowym (parametr wejściowy) są automatycznie wysyłane z powrotem do tabeli po pomyślnym zakończeniu działania funkcji. Nie można modyfikować rekordu w funkcjach języka JavaScript.

Wyjście

Użyj powiązania wyjściowego usługi Mobile Apps, aby zapisać nowy rekord w tabeli usługi Mobile Apps.

Dane wyjściowe — przykład

W poniższym przykładzie pokazano funkcję języka C#, która jest wyzwalana przez komunikat w kolejce i tworzy rekord w tabeli aplikacji mobilnej.

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

Dane wyjściowe — atrybuty

W bibliotekach klas języka C# użyj atrybutu MobileTable .

Aby uzyskać informacje o właściwościach atrybutów, które można skonfigurować, zobacz Dane wyjściowe — konfiguracja. Oto przykład atrybutu MobileTable w podpisie metody:

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

Dane wyjściowe — konfiguracja

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json i atrybutu MobileTable .

właściwość function.json Właściwość atrybutu opis
type nie dotyczy Musi być ustawiona wartość "mobileTable"
direction nie dotyczy Musi być ustawiona wartość "out"
name nie dotyczy Nazwa parametru wyjściowego w podpisie funkcji.
Tablename TableName Nazwa tabeli danych aplikacji mobilnej
Połączenia MobileAppUriSetting Nazwa ustawienia aplikacji, które ma adres URL aplikacji mobilnej. Funkcja używa tego adresu URL do konstruowania wymaganych operacji REST względem aplikacji mobilnej. Utwórz ustawienie aplikacji w aplikacji funkcji zawierającej adres URL aplikacji mobilnej, a następnie określ nazwę ustawienia aplikacji we właściwości w powiązaniu connection wejściowym. Adres URL wygląda następująco: https://<appname>.azurewebsites.net.
apiKey ApiKeySetting Nazwa ustawienia aplikacji, które ma klucz interfejsu API aplikacji mobilnej. Podaj klucz interfejsu API, jeśli zaimplementujesz klucz interfejsu API w zapleczu aplikacji mobilnej Node.js lub zaimplementuj klucz interfejsu API w zapleczu aplikacji mobilnej platformy .NET. Aby podać klucz, utwórz ustawienie aplikacji w aplikacji funkcji zawierającej klucz interfejsu API, a następnie dodaj apiKey właściwość w powiązaniu wejściowym z nazwą ustawienia aplikacji.

Podczas tworzenia aplikacji lokalnie dodaj ustawienia aplikacji w pliku local.settings.json w kolekcji Values .

Ważne

Nie udostępniaj klucza interfejsu API klientom aplikacji mobilnej. Powinny być bezpiecznie dystrybuowane tylko do klientów po stronie usługi, takich jak Usługa Azure Functions. Usługa Azure Functions przechowuje informacje o połączeniu i klucze interfejsu API jako ustawienia aplikacji, aby nie były zaewidencjonowane w repozytorium kontroli źródła. Chroni to poufne informacje.

Dane wyjściowe — użycie

W funkcjach skryptów języka C# użyj nazwanego parametru wyjściowego typu out object , aby uzyskać dostęp do rekordu wyjściowego. W bibliotekach MobileTable klas języka C# atrybut może być używany z dowolnym z następujących typów:

  • ICollector<T> lub IAsyncCollector<T>, gdzie T jest albo JObject dowolnym typem z właściwością public string Id .
  • out JObject
  • out T lub out T[], gdzie T jest dowolnym typem z właściwością public string Id .

W funkcjach Node.js użyj polecenia context.bindings.<name> , aby uzyskać dostęp do rekordu wyjściowego.

Następne kroki