Scénáře Azure Functions

Často vytváříme systémy pro reakci na řadu kritických událostí. Bez ohledu na to, jestli vytváříte webové rozhraní API, reagujete na změny databáze, zpracováváte streamy událostí nebo zprávy, můžete je použít k jejich implementaci.

V mnoha případech se funkce integruje s řadou cloudových služeb , aby poskytovala implementace s bohatými funkcemi. Níže jsou uvedené běžné (ale bez použití vyčerpávající) sady scénářů pro Azure Functions.

V horní části článku vyberte svůj vývojový jazyk.

Nahrání souboru procesu

Existuje několik způsobů, jak pomocí funkcí zpracovat soubory do kontejneru úložiště objektů blob nebo z kontejneru úložiště objektů blob. Další informace o možnostech aktivace v kontejneru objektů blob najdete v dokumentaci k osvědčeným postupům práce s objekty blob.

Například v maloobchodním řešení může partnerový systém odesílat informace o katalogu produktů jako soubory do úložiště objektů blob. Funkci aktivovanou objektem blob můžete použít k ověření, transformaci a zpracování souborů do hlavního systému při jejich nahrání.

Diagram of a file upload process using Azure Functions.

Následující kurzy používají trigger Event Gridu ke zpracování souborů v kontejneru objektů blob:

Například použití triggeru objektu blob s odběrem události v kontejnerech objektů 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();
        }
    }
}

Zpracování datových proudů a událostí v reálném čase

Tolik telemetrie se generuje a shromažďuje z cloudových aplikací, zařízení IoT a síťových zařízení. Služba Azure Functions může tato data zpracovávat téměř v reálném čase jako horká cesta a pak je ukládat do služby Azure Cosmos DB pro použití na řídicím panelu analýzy.

Vaše funkce můžou také používat triggery událostí s nízkou latencí, jako je Event Grid, a výstupy v reálném čase, jako je SignalR, ke zpracování dat téměř v reálném čase.

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

Například použití triggeru centra událostí ke čtení z centra událostí a výstupní vazby pro zápis do centra událostí po debatě a transformaci událostí:

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

Strojové učení a AI

Kromě zpracování dat je možné službu Azure Functions použít k odvození modelů.

Například funkce, která volá model TensorFlow nebo ji odesílá do služeb Azure AI, může zpracovávat a klasifikovat datový proud obrázků.

Funkce se také můžou připojit k dalším službám, které pomáhají zpracovávat data a provádět další úlohy související s AI, jako je sumarizace textu.

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

Spouštění naplánovaných úloh

Funkce umožňují spouštět kód na základě plánu cron, který definujete.

Podívejte se, jak vytvořit funkci na webu Azure Portal, která běží podle plánu.

Databáze zákazníků s finančními službami může být například analyzována pro duplicitní položky každých 15 minut, aby se zabránilo více komunikacím, které se budou shodovat se stejným zákazníkem.

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
}

Vytvoření škálovatelného webového rozhraní API

Aktivovaná funkce HTTP definuje koncový bod HTTP. Tyto koncové body spouští kód funkce, který se může připojit k jiným službám přímo nebo pomocí rozšíření vazeb. Koncové body můžete vytvořit do webového rozhraní API.

Koncový bod funkce aktivovaný protokolem HTTP můžete použít také jako integraci webhooku, jako jsou webhooky GitHubu. Tímto způsobem můžete vytvářet funkce, které zpracovávají data z událostí GitHubu. Další informace najdete v tématu Monitorování událostí GitHubu pomocí webhooku se službou Azure Functions.

Diagram of processing an HTTP request using Azure Functions.

Příklady najdete v následujících tématech:

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

Vytvoření bezserverového pracovního postupu

Funkce jsou často výpočetní komponentou v topologii bezserverového pracovního postupu, jako je pracovní postup Logic Apps. Pomocí rozšíření Durable Functions můžete také vytvářet dlouhotrvající orchestrace. Další informace najdete v tématu Durable Functions – přehled.

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

Reakce na změny databáze

V případě změn uložených dat může být potřeba protokolovat, auditovat nebo provádět nějakou jinou operaci. Triggery funkcí poskytují dobrý způsob, jak získat oznámení o změnách dat při počáteční operaci.

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

Zvažte následující příklady:

Vytváření spolehlivých systémů zpráv

Pomocí funkcí se službami zasílání zpráv Azure můžete vytvářet pokročilá řešení zasílání zpráv řízená událostmi.

Triggery můžete například použít ve frontách Azure Storage jako způsob, jak zřetězit řadu spuštění funkcí. Nebo použijte fronty a triggery služby Service Bus pro online systém objednávek.

Diagram of Azure Functions in a reliable message system.

Následující článek ukazuje, jak zapisovat výstup do fronty úložiště.

V těchto článcích se dozvíte, jak aktivovat z fronty nebo tématu služby Azure Service Bus.

Další kroky