Azure Functions-scenarier

Ofta skapar du system som reagerar på en rad kritiska händelser. Oavsett om du skapar ett webb-API, svarar på databasändringar eller bearbetar händelseströmmar eller meddelanden kan du använda Azure Functions för att implementera dessa system.

I många fall integreras en funktion med en matris med molntjänster för att tillhandahålla funktionsrika implementeringar. Följande lista visar vanliga (men inte alls uttömmande) scenarier för Azure Functions.

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

Bearbeta filuppladdningar

Du kan använda funktioner på flera sätt för att bearbeta filer in i eller ut ur en bloblagringscontainer. För att lära dig mer om alternativ för att trigga på en blobcontainer, se Arbeta med blobar i dokumentationen om bästa praxis.

I en detaljhandelslösning kan till exempel ett partnersystem skicka produktkataloginformation som filer till bloblagring. Du kan använda en blobb-utlöst funktion för att verifiera, transformera och bearbeta filerna för införande i huvudsystemet när du laddar upp dem.

Diagram över en filuppladdningsprocess med Hjälp av Azure Functions.

I följande handledningar används en blob-utlösare (Event Grid-baserad) för att bearbeta filer i en blobcontainer.

Använd till exempel "blob trigger" 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

Molnprogram, IoT-enheter och nätverksenheter genererar och samlar in en stor mängd telemetri. 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 trigger för händelsehubbar för att läsa från en händelsehubb och utdatabindningen för att skriva till en händelsehubb efter att ha delat upp och transformerat händelserna:

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionSetting",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionSetting")] 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

Azure Functions tillhandahåller serverlösa beräkningsresurser som integreras med AI- och Azure-tjänster för att effektivisera skapandet av molnbaserade intelligenta program. Du kan använda programmeringsmodellen Functions för att skapa och vara värd för MCP-servrar (Remote Model Content Protocol) och implementera olika AI-verktyg. Mer information finns i Verktyg och MCP-servrar.

Med Azure OpenAI-bindningstillägget kan du integrera AI-funktioner och beteenden för Azure OpenAI-tjänsten, till exempel hämtningsförhöjd generering (RAG) i dina funktionskodkörningar. Mer information finns i Hämtningsförhöjd generering.

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.

Mer information finns i Använda AI-verktyg och modeller i Azure Functions.

Köra schemalagda aktiviteter

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

Se Skapa en funktion i Azure-portalen som körs enligt ett schema.

Du kan till exempel analysera en kunddatabas för finansiella tjänster för duplicerade 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.

Exempel finns i följande kodfragment:

[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-triggad 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 kodfragment:

[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

Funktioner fungerar ofta som beräkningskomponent 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 översikten över Durable Functions.

Ett kombinationsdiagram över en serie specifika serverlösa arbetsflöden med Hjälp av Azure Functions.

Svara på databasändringar

Vissa processer måste logga, granska eller utföra andra åtgärder 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.

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.

De här artiklarna visar hur du skriver utdata till en lagringskö:

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

Nästa steg