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 över en filuppladdningsprocess med Hjälp av Azure Functions.

I följande självstudier används en Blob-utlösare (Event Grid-baserad) 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 över en realtidsströmprocess med hjälp av 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. Med Azure OpenAI-bindningstillägget kan du enkelt integrera funktioner och beteenden för Azure OpenAI-tjänsten i dina funktionskodkörningar.

Funktioner kan ansluta till en OpenAI-resurser för att aktivera text- och chattavslutningar, använda assistenter och utnyttja inbäddningar och semantisk sökning.

En funktion kan också anropa en TensorFlow-modell eller Azure AI-tjänster för att bearbeta och klassificera en ström av bilder.

Diagram över en maskininlärnings- och AI-process med Hjälp av 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 Portal 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 över en schemalagd aktivitet där en funktion rensar en databas var 15:e minut och deduplicerar poster baserat på affärslogik.

[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 över bearbetning av en HTTP-begäran med Hjälp av 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.

Ett kombinationsdiagram över en serie specifika serverlösa arbetsflöden med Hjälp av 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 över en funktion som används för att svara på databasändringar.

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 över Azure Functions i ett tillförlitligt meddelandesystem.

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