Azure Functions-scenarier

Vi skapar ofta system för att reagera på en rad kritiska händelser. Oavsett om du skapar ett webb-API, svarar på databasändringar, bearbetar händelseströmmar eller meddelanden kan Azure Functions användas för att implementera dem.

I många fall integreras en funktion med en matris med molntjänster för att tillhandahålla funktionsrika implementeringar. Följande är en vanlig (men inte alls fullständig) uppsättning scenarier för Azure Functions.

Välj ditt utvecklingsspråk överst i artikeln.

Bearbeta filuppladdningar

Det finns flera sätt att använda funktioner för att bearbeta filer till eller från en bloblagringscontainer. Mer information om alternativ för att utlösa på en blobcontainer finns i Arbeta med blobar i dokumentationen om metodtips.

I en detaljhandelslösning kan till exempel ett partnersystem skicka produktkataloginformation som filer till bloblagring. Du kan använda en blobutlöst funktion för att verifiera, transformera och bearbeta filerna till huvudsystemet när de laddas upp.

Diagram of a file upload process using Azure Functions.

I följande självstudier används en Event Grid-utlösare för att bearbeta filer i en blobcontainer:

Du kan till exempel använda blobutlösaren med en händelseprenumeration på blobcontainrar:

[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();
        }
    }
}

Realtidsström och händelsebearbetning

Så mycket telemetri genereras och samlas in från molnprogram, IoT-enheter och nätverksenheter. Azure Functions kan bearbeta dessa data nästan i realtid som den frekventa sökvägen och sedan lagra dem i Azure Cosmos DB för användning på en instrumentpanel för analys.

Dina funktioner kan också använda händelseutlösare med låg latens, till exempel Event Grid, och realtidsutdata som SignalR för att bearbeta data nästan i realtid.

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

Du kan till exempel använda händelsehubbarutlösaren för att läsa från en händelsehubb och utdatabindningen för att skriva till en händelsehubb efter att ha debatterat och transformerat händelserna:

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

Maskininlärning och AI

Förutom databehandling kan Azure Functions användas för att härleda modeller.

En funktion som till exempel anropar en TensorFlow-modell eller skickar den till Azure AI-tjänster kan bearbeta och klassificera en ström av bilder.

Funktioner kan också ansluta till andra tjänster för att bearbeta data och utföra andra AI-relaterade uppgifter, till exempel textsammanfattning.

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

Köra schemalagda aktiviteter

Med Functions kan du köra koden baserat på ett cron-schema som du definierar.

Se hur du skapar en funktion i Azure-portalen som körs enligt ett schema.

En kunddatabas för finansiella tjänster kan till exempel analyseras för dubbletter av poster var 15:e minut för att undvika att flera meddelanden skickas till samma kund.

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
}

Skapa ett skalbart webb-API

En HTTP-utlöst funktion definierar en HTTP-slutpunkt. Dessa slutpunkter kör funktionskod som kan ansluta till andra tjänster direkt eller med hjälp av bindningstillägg. Du kan skapa slutpunkterna i ett webbaserat API.

Du kan också använda en HTTP-utlöst funktionsslutpunkt som en webhook-integrering, till exempel GitHub-webhooks. På så sätt kan du skapa funktioner som bearbetar data från GitHub-händelser. Mer information finns i Övervaka GitHub-händelser med hjälp av en webhook med Azure Functions.

Diagram of processing an HTTP request using Azure Functions.

Exempel finns i följande:

[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();
}

Skapa ett serverlöst arbetsflöde

Functions är ofta beräkningskomponenten i en serverlös arbetsflödestopologi, till exempel ett Logic Apps-arbetsflöde. Du kan också skapa långvariga orkestreringar med tillägget Durable Functions. Mer information finns i Översikt över Durable Functions.

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

Svara på databasändringar

Det finns processer där du kan behöva logga, granska eller utföra någon annan åtgärd när lagrade data ändras. Funktionsutlösare är ett bra sätt att meddelas om dataändringar för att initiera en sådan åtgärd.

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

Föreställ dig följande exempel:

Skapa tillförlitliga meddelandesystem

Du kan använda Functions med Azure-meddelandetjänster för att skapa avancerade händelsedrivna meddelandelösningar.

Du kan till exempel använda utlösare i Azure Storage-köer som ett sätt att länka samman en serie funktionskörningar. Eller använd Service Bus-köer och utlösare för ett onlinebeställningssystem.

Diagram of Azure Functions in a reliable message system.

Följande artikel visar hur du skriver utdata till en lagringskö.

Och de här artiklarna visar hur du utlöser från en Azure Service Bus-kö eller ett ämne.

Nästa steg