scenari di Funzioni di Azure

Spesso vengono sviluppati sistemi per reagire a una serie di eventi critici. Indipendentemente dal fatto che si stia creando un'API Web, rispondendo alle modifiche del database, elaborando flussi di eventi o messaggi, è possibile usare Funzioni di Azure per implementarle.

In molti casi una funzione si integra con una serie di servizi cloud per offrire implementazioni complete e avanzate. Di seguito è riportato un set comune (ma non esaustivo) di scenari per Funzioni di Azure.

Selezionare il linguaggio di sviluppo nella parte superiore dell'articolo.

Elaborare caricamenti di file

Esistono diversi modi per usare le funzioni per elaborare i file da o verso un contenitore di archiviazione BLOB. Per altre informazioni sulle opzioni per l'attivazione in un contenitore BLOB, vedere Uso dei BLOB nella documentazione sulle procedure consigliate.

Ad esempio, in una soluzione di vendita al dettaglio, un sistema partner può inviare informazioni sul catalogo prodotti come file nell'archivio BLOB. È possibile usare una funzione attivata da BLOB per convalidare, trasformare ed elaborare i file nel sistema principale durante il caricamento.

Diagram of a file upload process using Azure Functions.

Le esercitazioni seguenti usano un trigger di Griglia di eventi per elaborare i file in un contenitore BLOB:

Ad esempio, usando il trigger BLOB con una sottoscrizione di eventi nei contenitori BLOB:

[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")]Stream myCatalogData, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");

    using (var reader = new StreamReader(myCatalogData))
    {
        var catalogEntry = await reader.ReadLineAsync();
        while(catalogEntry !=null)
        {
            // Process the catalog entry
            // ...

            catalogEntry = await reader.ReadLineAsync();
        }
    }
}

Elaborazione di flussi ed eventi in tempo reale

La maggior parte dei dati di telemetria viene generata e raccolta da applicazioni cloud, dispositivi IoT e dispositivi di rete. Funzioni di Azure può elaborare i dati quasi in tempo reale come percorso ad accesso frequente, quindi archiviarlo in Azure Cosmos DB per l'uso in un dashboard di analisi.

Le funzioni possono anche usare trigger di eventi a bassa latenza, ad esempio Griglia di eventi, e output in tempo reale come SignalR per elaborare i dati quasi in tempo reale.

Diagram of a real-time stream process using Azure Functions.

Ad esempio, l'uso del trigger di hub eventi per leggere da un hub eventi e l'associazione di output per scrivere in un hub eventi dopo il debatching e la trasformazione degli eventi:

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionString",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionString")] IAsyncCollector<SensorDataRecord> outputMessages,
    PartitionContext partitionContext,
    ILogger log)
{
    var debatcher = new Debatcher(log);
    var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);

    var xformer = new Transformer(log);
    await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}

Machine Learning e intelligenza artificiale

Oltre all'elaborazione dei dati, è possibile usare Funzioni di Azure per dedurre sui modelli.

Ad esempio, una funzione che chiama un modello TensorFlow o la invia ai servizi di intelligenza artificiale di Azure può elaborare e classificare un flusso di immagini.

Le funzioni possono anche connettersi ad altri servizi per elaborare i dati ed eseguire altre attività correlate all'intelligenza artificiale, ad esempio il riepilogo del testo.

Diagram of a machine learning and AI process using Azure Functions.

Eseguire attività pianificate

Funzioni consente di eseguire il codice in base a una pianificazione cron definita dall'utente.

Vedere come creare una funzione nella portale di Azure eseguita in base a una pianificazione.

Un database dei clienti dei servizi finanziari, ad esempio, potrebbe essere analizzato per individuare voci duplicate ogni 15 minuti per evitare che più comunicazioni vengano eseguite allo stesso cliente.

Diagram of a scheduled task where a function cleans a database every 15 minutes deduplicating entries based on business logic.

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    // Perform the database deduplication
}

Creare un'API Web scalabile

Una funzione attivata da HTTP definisce un endpoint HTTP. Questi endpoint eseguono il codice della funzione che può connettersi ad altri servizi direttamente o usando le estensioni di associazione. È possibile comporre gli endpoint in un'API basata sul Web.

È anche possibile usare un endpoint di funzione attivato da HTTP come integrazione di webhook, ad esempio webhook GitHub. In questo modo, è possibile creare funzioni che elaborano i dati dagli eventi GitHub. Per altre informazioni, vedere Monitorare gli eventi di GitHub usando un webhook con Funzioni di Azure.

Diagram of processing an HTTP request using Azure Functions.

Per esempi, vedere quanto segue:

[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [CosmosDB(
        databaseName: "my-database",
        collectionName: "my-container",
        ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
    ILogger log)
{
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    string name = data?.name;

    if (name == null)
    {
        return new BadRequestObjectResult("Please pass a name in the request body json");
    }

    // Add a JSON document to the output container.
    await documentsOut.AddAsync(new
    {
        // create a random ID
        id = System.Guid.NewGuid().ToString(), 
        name = name
    });

    return new OkResult();
}

Creare un flusso di lavoro serverless

Funzioni è spesso il componente di calcolo in una topologia del flusso di lavoro serverless, ad esempio un flusso di lavoro di App per la logica. È anche possibile creare orchestrazioni a esecuzione prolungata usando l'estensione Durable Functions. Per altre informazioni, vedere Panoramica di Durable Functions.

A combination diagram of a series of specific serverless workflows using Azure Functions.

Rispondere alle modifiche di database

Esistono processi in cui potrebbe essere necessario registrare, controllare o eseguire altre operazioni quando vengono memorizzati i dati. I trigger di Funzioni consentono di ricevere una notifica delle modifiche ai dati per l'inizializzazione di un'operazione di questo tipo.

Diagram of a function being used to respond to database changes.

Vedi gli esempi seguenti:

Creare sistemi di messaggi affidabili

È possibile usare Funzioni con i servizi di messaggistica di Azure per creare soluzioni di messaggistica avanzate basate su eventi.

Ad esempio, è possibile usare i trigger nelle code Archiviazione di Azure come modo per concatenare una serie di esecuzioni di funzioni. In alternativa, usare code e trigger del bus di servizio per un sistema di ordinamento online.

Diagram of Azure Functions in a reliable message system.

L'articolo seguente illustra come scrivere l'output in una coda di archiviazione.

Questi articoli illustrano come eseguire l'attivazione da una coda o un argomento bus di servizio di Azure.

Passaggi successivi