Manche Arbeit dauert Tage und besteht vor allem aus Warten: Eine Ausschreibung wartet auf die Entscheidung der Leitung, ob sich das Büro bewirbt,
höchstens bis zu ihrer Frist, und einen Tag vorher soll jemand erinnert werden. Mit gewöhnlichen Functions bräuchte das einen Zustand in einer Datenbank,
einen Timer, der jede Stunde nachsieht, und Code, der Zustand, Erinnerung und Frist zusammenhält. Durable Functions ist eine Erweiterung von Azure
Functions für genau solche Abläufe: Sie schreiben den Ablauf als gewöhnlichen C#-Code mit await, und die Erweiterung speichert nach jedem Schritt,
wo er steht. Fällt der Host aus oder wird die App neu ausgeliefert, geht es an derselben Stelle weiter.
Neu in dieser Lektion:
| Paket | Version | wofür |
|---|---|---|
Microsoft.Azure.Functions.Worker.Extensions.DurableTask |
1.22.0 | Durable Functions im isolierten Worker-Modell, mit Analyzern für die Regeln des Orchestrators |
Die Bausteine
- Orchestrierung (Orchestrator-Funktion): beschreibt den Ablauf. Sie ruft Aktivitäten auf, wartet auf Timer und Ereignisse und entscheidet. Sie selbst tut keine Arbeit mit der Außenwelt.
- Aktivität: tut die Arbeit, einen Schritt mit Wirkung: eine Mail senden, eine Zeile schreiben, eine Schnittstelle fragen. Eine Aktivität kann wiederholt werden und ist deshalb idempotent wie jede Verarbeitung in Modul 3.5.
- Entität (Durable Entity): ein kleines Objekt mit Zustand und Operationen, das Nachrichten einzeln abarbeitet, etwa ein Zähler je Kalender. Sie erinnert an den Akteur aus Lektion 3.11.8.
- Client: startet Orchestrierungen, schickt ihnen Ereignisse, fragt ihren Stand ab, beendet sie. In einer Function ist das ein Parameter mit
[DurableClient] DurableTaskClient client.
Jede Orchestrierung hat eine Instanz-ID. Unter ihr fragt man den Stand ab (Running, Completed, Failed, Terminated) und schickt Ereignisse.