Durable Functions verze a průvodce migrací

Durable Functions je rozšíření Azure Functions a Azure WebJobs, které umožňuje psát stavové funkce v bezserverovém prostředí. Toto rozšíření za vás spravuje stav, kontrolní body a restartování. Pokud ještě neznáte Durable Functions, přečtěte si přehledovou dokumentaci.

Souhrn verzí

Version Stav Klíčové změny
v3.x Aktuální (doporučeno) Aktualizace sady Azure Storage SDK, vylepšená nákladová efektivita, žádné změny kódu pro upgrade z verze 2.x
v2.x Údržba (pouze opravy zabezpečení a chyb) Odolné entity, Durable HTTP
v1.x Konec podpory září 2026 Legacy

Novinky ve verzi 3.x

Balíček Microsoft.Azure.WebJobs.Extensions.DurableTask v3, označovaný jako WebJobs.Extensions.DurableTask v dalších částech, je aktuální doporučenou verzí. Upgrade z verze 2.x nevyžaduje žádné změny kódu – stačí aktualizovat pouze závislosti balíčku. Tato aktualizace se považuje za zásadní změnu pouze pro zákazníky, kteří používají aplikace Durable C#, které používají model v procesu.

Note

Balíček Durable Functions .NET out-of-process, Microsoft.Azure.Functions.Worker.Extensions.DurableTask, odkazuje na Microsoft.Azure.WebJobs.Extensions.DurableTask jako základní sestavení. Proto se tato aktualizace vztahuje také na Microsoft.Azure.Functions.Worker.Extensions.DurableTask počínaje verzí 1.2.x.

Aktualizace sady Azure Storage SDK

Ve výchozím nastavení Durable Functions používají Azure Storage jako úložiště na pozadí, aby se trvale uložil stav aplikace. Ve verzi WebJobs.Extensions.DurableTask v3 se back-end Azure Storage upgradoval tak, aby používal nejnovější verze sad SDK Azure Storage: Azure. Data.Tables, Azure. Storage.Blobs a Azure Storage.Queues. Tyto sady SDK nabízejí vylepšenou podporu pro spravovanou identitu, lepší výkon, efektivnější zpracování dat a lepší zabezpečení v porovnání se staršími balíčky Microsoft.Azure.Storage.* použitými ve verzi 2.x.

Vylepšená nákladová efektivita (pro poskytovatele Azure Storage)

V back-endu Azure Storage zodpovídá Správce oddílů za distribuci front partitions/control mezi pracovní procesy. Balíček WebJobs.Extensions.DurableTask v3 ve výchozím nastavení používá Správce oddílů V3, což je nový návrh, který využívá Azure Tabulky ke správě přiřazení oddílů místo zapůjčení objektů blob Azure. Tento návrh může výrazně snížit náklady na úložiště a usnadnit ladění. Když se použije Správce oddílů V3, vytvoří se v účtu úložiště nová tabulka s názvem Partitions, která vám umožní snadno zkontrolovat informace o oddílu.

Odebrání podpory modulu runtime Azure Functions v1

WebJobs.Extensions.DurableTask v3 už nepodporuje verzi 1.x modulu runtime Azure Functions, jehož podpora je naplánovaná na ukončení v září 2026. Pokud musíte použít modul runtime služby Functions v1, použijte prosím verzi rozšíření Durable Functions nižší než v2.11.0. Mějte na paměti, že jakmile nastane plánované ukončení podpory, Durable Functions také ukončí podporu pro runtime verze 1.

Aktualizace cílového prostředí modulu .NET runtime

WebJobs.Extensions.DurableTask v3 aktualizuje cílový modul runtime z .NET Core 3.1 na .NET 6 a nabízí vylepšený výkon a vylepšenou kompatibilitu s moderními funkcemi a knihovnami .NET. Tato aktualizace odpovídá budoucím verzím sad rozšíření Azure Functions.

Migrace z v2.x na v3.x

Migrace z verze 2.x na v3.x nevyžaduje žádné změny kódu – jednoduše aktualizujte závislosti, abyste mohli začít používat nové funkce.

Aktualizujte sadu rozšíření Azure Functions verze 4.22.0 nebo novější.

Kompatibilita při snižování verze (v3.x na v2.x)

WebJobs.Extensions.DurableTask v3 používá jiné kódování textu pro sadu Azure Storage SDK (Base64) v porovnání s v2 (UTF-8). Pokud se potřebujete vrátit z verze 3.x na verzi 2.x, zajistěte zpětnou kompatibilitu pomocí následujících minimálních verzí:

  • In-process model:v2.13.5 nebo novější.
  • Osolovaný model pracovního procesu:v1.1.5 nebo novější (pokud se vrátíte z verze 1.2.x nebo vyšší).

Vraťte se k verzi sady rozšíření starší než 4.22.0.

Podpora a údržba v2.x

WebJobs.Extensions.DurableTask v2.x nadále přijímá aktualizace zabezpečení a opravy chyb a zajišťuje, aby vaše stávající aplikace zůstaly zabezpečené a stabilní. Všechny nové funkce a vylepšení se ale přidávají výhradně do verze 3.x. Z tohoto důvodu byste měli upgradovat na WebJobs.Extensions.DurableTask v3, jakmile budete moct využívat nejnovější funkce a průběžné vylepšení.

Funkce představené ve verzi 2.x

V Durable Functions 2.x a novějších verzích jsou ve všech podporovaných jazycích k dispozici následující funkce.

Note

Podrobnosti o rozhraní API v procesu .NET v této části se nevztahují na izolovaný model pracovního procesu. Pokyny k izolovanému pracovnímu procesu najdete v Durable Functions přehled izolovaného procesu.

Odolné entity

Durable Functions podporuje funkce entity pro čtení a aktualizaci malých částí stavu, označované jako durable entities. Podobně jako orchestráční funkce jsou i entity funkce se speciálním typem triggeru, entity triggerem. Na rozdíl od funkcí orchestrátoru nemají funkce entit žádná specifická omezení kódu. Funkce entit také explicitně spravují stav místo implicitního znázornění stavu prostřednictvím toku řízení.

Další informace najdete v článku o trvalých entitách .

Odolný HTTP

Durable Functions obsahuje funkci Durable HTTP, která umožňuje:

  • Volání rozhraní API HTTP přímo z funkcí orchestrace (s některými zdokumentovanými omezeními)
  • Implementujte automatické dotazování stavu HTTP 202 na straně klienta.
  • Použijte integrovanou podporu pro spravované identity Azure.

Další informace najdete v článku o funkcích HTTP .

Migrace z 1.x na 2.x

Important

Verze 1.x modulu runtime Azure Functions dosáhne konce podpory v September 2026. Pokud stále používáte verzi 1.x, naplánujte migraci brzy.

Tato část popisuje, jak migrovat stávající verzi 1.x Durable Functions na verzi 2.x, abyste mohli využívat nové funkce.

Upgrade rozšíření Durable Functions

Nainstalujte do svého projektu poslední verzi 2.x rozšíření Durable Functions.

Durable Functions 2.x je k dispozici od verze 2.x sady rozšíření Azure Functions.

Podpora Python v Durable Functions vyžaduje Durable Functions 2.x nebo vyšší.

Pokud chcete aktualizovat verzi sady rozšíření v projektu, otevřete host.json a aktualizujte extensionBundle oddíl tak, aby používal verzi 4.x ([4.*, 5.0.0)).

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

Durable Functions 2.x je k dispozici od verze 2.x sady rozšíření Azure Functions.

Pokud chcete aktualizovat verzi sady rozšíření v projektu, otevřete host.json a aktualizujte extensionBundle oddíl tak, aby používal verzi 4.x ([4.*, 5.0.0)).

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

Note

Pokud Visual Studio Code po změně verze sady rozšíření nezobrazují správné šablony, Znovu načtěte okno spuštěním příkazu Developer: Znovu načíst okno (Ctrl+R v systému Windows a Linux, Command+R v systému macOS).

Durable Functions 2.x je k dispozici od verze 2.x sady rozšíření Azure Functions.

Pokud chcete aktualizovat verzi sady rozšíření v projektu, otevřete host.json a aktualizujte extensionBundle oddíl tak, aby používal verzi 4.x ([4.*, 5.0.0)).

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

Aktualizujte projekt .NET tak, aby používal nejnovější verzi rozšíření vazeb Durable Functions.

Další informace najdete v tématu Registrace rozšíření vazeb Azure Functions.

Aktualizace kódu Durable Functions

Durable Functions 2.x zavádí několik zásadních změn. Durable Functions aplikace 1.x nejsou kompatibilní s Durable Functions 2.x bez změn kódu. Tato část uvádí některé změny, které musíte provést při upgradu funkcí verze 1.x na verzi 2.x.

schéma Host.json

Durable Functions 2.x používá nové schéma host.json. Mezi hlavní změny z verze 1.x patří:

  • "storageProvider" (a "azureStorage" pododdíl) pro konfiguraci specifickou pro úložiště.
  • "tracing" pro trasování a konfiguraci protokolování.
  • "notifications" (a "eventGrid" pododdíl) pro konfiguraci oznámení Event Gridu.

Podrobnosti najdete v referenční dokumentaci k Durable Functions host.json.

Změny názvu výchozího centra úloh

Pokud ve verzi 1.x nebyl v host.jsonzadán název centra úloh , byl ve výchozím nastavení nastaven na DurableFunctionsHub. Ve verzi 2.x je výchozí název centra úloh odvozený od názvu aplikace funkcí. Z tohoto důvodu, pokud jste při upgradu na verzi 2.x nezadali název centra úloh, bude váš kód fungovat s novým centrem úloh a všechny probíhající orchestrace už nebudou mít aplikaci, která je zpracovává. Pokud chcete tento problém obejít, můžete buď explicitně nastavit název centra úloh na výchozí hodnotu v1.x DurableFunctionsHub, nebo můžete postupovat podle našich pokynů k nasazení bez výpadků , kde najdete podrobnosti o tom, jak zpracovat zásadní změny pro orchestrace v testovacích verzích.

Změny veřejného rozhraní v Durable Functions

Ve verzi 1.x mají různé objekty kontext podporované Durable Functions abstraktní základní třídy určené k použití při testování jednotek. V rámci Durable Functions 2.x jsou tyto abstraktní základní třídy nahrazeny rozhraními.

Následující tabulka představuje hlavní změny:

1.x 2.x
DurableOrchestrationClientBase IDurableOrchestrationClient nebo IDurableClient
DurableOrchestrationContext nebo DurableOrchestrationContextBase IDurableOrchestrationContext
DurableActivityContext nebo DurableActivityContextBase IDurableActivityContext
OrchestrationClientAttribute DurableClientAttribute

V případě, že abstraktní základní třída obsahovala virtuální metody, tyto virtuální metody byly nahrazeny rozšiřujícími metodami definovanými v DurableContextExtensions.

function.json změny

V Durable Functions 1.x používá vazba klienta orchestrace formu type z orchestrationClient. Místo toho se používá durableClient verze 2.x.

Vyvolání změn událostí

V Durable Functions 1.x volání události raise API a zadání instance, která neexistuje, způsobila tiché selhání. Od verze 2.x vyvolání události na neexistující orchestraci způsobí výjimku.