Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Durable Functions är ett tillägg till Azure Functions och Azure WebJobs som gör att du kan skriva tillståndskänsliga funktioner i en serverlös miljö. Tillägget hanterar tillstånd, kontrollpunkter och omstarter. Om du inte redan är bekant med Durable Functions kan du läsa översiktsdokumentationen.
Microsoft.Azure.WebJobs.Extensions.DurableTask v3.x
Det här avsnittet introducerar det nya Microsoft.Azure.WebJobs.Extensions.DurableTask v3-paketet (kallas webjobs.extensions.DurableTask i efterföljande avsnitt) och innehåller information om uppdateringar och ändringar. Den här uppdateringen anses bara vara en brytande ändring för kunder som kör Durable C#-appar som använder in-process-modellen.
Anmärkning
Durable Functions .NET out-of-process-paketet Microsoft.Azure.Functions.Worker.Extensions.DurableTask refererar till Microsoft.Azure.WebJobs.Extensions.DurableTask som dess underliggande sammansättning. Den här uppdateringen gäller därför även för Microsoft.Azure.Functions.Worker.Extensions.DurableTask, med början från version 1.2.x.
Ny Azure Storage SDK
Durable Functions använder som standard Azure Storage som lagringsserverdel för att spara programtillståndet på ett lämpligt sätt. I WebJobs.Extensions.DurableTask v3 uppgraderades Azure Storage-serverdelen för att använda de senaste versionerna av Azure Storage SDK:er: Azure.Data.Tables, Azure.Storage.Blobs och Azure.Storage.Queues. De nya Azure Storage-SDK:erna är mer skyddade och ger förbättrat stöd för hanterad identitet. De ger också bättre prestanda, effektivare datahantering och andra senaste lagringsfunktioner.
Förbättrad kostnadseffektivitet för Azure Storage-serverdelen
I Azure Storage-serverdelen ansvarar Partitionshanteraren för att distribuera partitioner/kontrollköer mellan arbetare. Paketet WebJobs.Extensions.DurableTask v3 använder Partition Manager V3 som standard, vilket är en ny design som använder Azure-tabeller för att hantera partitionstilldelningar i stället för Azure Blob-lån. Den här designen kan avsevärt minska lagringskostnaderna samtidigt som felsökning blir enklare. När Partitionshanteraren V3 används skapas en ny tabell med namnet Partitions, i ditt lagringskonto, så att du enkelt kan kontrollera partitionsinformationen.
Stöd för körning av Functions v1 har tagits bort
WebJobs.Extensions.DurableTask v3 stöder inte längre version 1.x av Azure Functions-körningen, vilket är planerat att avslutas i september 2026. Om du måste använda Functions runtime v1 använder du en Durable Functions-tilläggsversion som är lägre än v2.11.0. Tänk på att när den schemalagda supporten upphör kommer Durable Functions även att släppa sitt stöd för runtime v1.
.NET Framework-uppdatering
WebJobs.Extensions.DurableTask v3 uppdaterar .NET-ramverket från .NET Core 3.1 till .NET 6, vilket ger bättre prestanda och förbättrad kompatibilitet med moderna .NET-funktioner och bibliotek. Den här uppdateringen överensstämmer med framtida versioner av Azure Functions-tilläggspaketen.
Migrering från WebJobs.Extensions.DurableTask v2.x till v3.x
Migrering från WebJobs.Extensions.DurableTask v2.x till v3.x är utformad för att vara enkel utan att några kodändringar krävs, eftersom ändringarna finns i bakgrunden. Uppdatera helt enkelt dina beroenden för att börja dra nytta av de nya funktionerna och förbättringarna i v3.x.
- För .NET-användare i processen: Uppdatera till Microsoft.Azure.WebJobs.Extensions.DurableTask version 3.0.0 eller senare.
- För isolerade .NET-användare: Uppdatera till Microsoft.Azure.Functions.Worker.Extensions.DurableTask version 1.2.0 eller senare.
- För användare av andra språk med tilläggspaket: Stöd för Durable Functions v3 i tilläggspaket kommer att vara tillgängligt från version 4.22.0.
Anmärkning
WebJobs.Extensions.DurableTask v3 använder den senaste versionen av Azure Storage SDK, som har en annan textkodning (Base64) jämfört med den som används i v2 (UTF-8). Om du behöver nedgradera från v3.x till v2.x ska du använda minst v2.13.5 för att säkerställa bakåtkompatibilitet. För .NET-out-of-process-användare med Microsoft.Azure.Functions.Worker.Extensions.DurableTask nedgraderar du till v1.1.5 eller senare om du återgår från v1.2.x eller senare.
Stöd och underhåll av v2.x
WebJobs.Extensions.DurableTask v2.x fortsätter att ta emot säkerhetsuppdateringar och felkorrigeringar, vilket säkerställer att dina befintliga program förblir säkra och stabila. Alla nya funktioner och förbättringar läggs dock exklusivt till i v3.x. Därför bör du uppgradera till WebJobs.Extensions.DurableTask v3 så snart du kan för att dra nytta av de senaste funktionerna och de pågående förbättringarna.
Nya funktioner i Microsoft.Azure.WebJobs.Extensions.DurableTask v2.x
I det här avsnittet beskrivs funktionerna i Durable Functions som läggs till i version 2.x.
Anmärkning
Det här avsnittet gäller inte durable functions i dotnet isolated worker. Se översikt över varaktiga funktioner och isolerad process.
Varaktiga entiteter
I Durable Functions 2.x introducerade vi ett nytt koncept för entitetsfunktioner .
Entitetsfunktioner definierar åtgärder för att läsa och uppdatera små delar av tillståndet, så kallade varaktiga entiteter. Precis som orchestrator-funktioner är entitetsfunktioner funktioner med en särskild utlösartyp, entitetsutlösare. Till skillnad från orkestreringsfunktioner har entitetsfunktioner inte några specifika kodbegränsningar. Entitetsfunktioner hanterar också tillstånd explicit i stället för att implicit representera tillstånd via kontrollflöde.
Mer information finns i artikeln om varaktiga entiteter .
Varaktigt HTTP
I Durable Functions 2.x introducerade vi en ny Durable HTTP-funktion som gör att du kan:
- Anropa HTTP-API:er direkt från orkestreringsfunktioner (med vissa dokumenterade begränsningar).
- Implementera automatisk HTTP 202-statussökning på klientsidan.
- Inbyggt stöd för Azure Managed Identities.
Mer information finns i artikeln HTTP-funktioner .
Migrera från 1.x till 2.x
I det här avsnittet beskrivs hur du migrerar din befintliga version 1.x Durable Functions till version 2.x för att dra nytta av de nya funktionerna.
Uppgradera tillägget
Installera den senaste 2.x-versionen av Durable Functions-bindningstillägget i projektet.
JavaScript, Python och PowerShell
Durable Functions 2.x är tillgängligt från och med version 2.x av Azure Functions-tilläggspaketet.
Python-stöd i Durable Functions kräver Durable Functions 2.x eller senare.
Om du vill uppdatera tilläggspaketets version i projektet öppnar du host.json och uppdaterar extensionBundle avsnittet så att version 4.x ([4.*, 5.0.0)används).
{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}
Anmärkning
Om Visual Studio Code inte visar rätt mallar när du har ändrat tilläggspaketversionen läser du in fönstret igen genom att köra kommandot Developer: Reload Window (Ctrl+R i Windows och Linux, Command+R på macOS).
Java
Durable Functions 2.x är tillgängligt från och med version 4.x av Azure Functions-tilläggspaketet. Du måste använda Azure Functions 4.0-körningen för att köra Java-funktioner.
Om du vill uppdatera tilläggspaketets version i projektet öppnar du host.json och uppdaterar extensionBundle avsnittet så att version 4.x ([4.*, 5.0.0)används).
{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}
.NÄT
Uppdatera .NET-projektet så att det använder den senaste versionen av durable functions-bindningstillägget.
Mer information finns i Registrera Azure Functions-bindningstillägg .
Uppdatera koden
Durable Functions 2.x introducerar flera ändringar som bryter befintlig funktionalitet. Durable Functions 1.x-program är inte kompatibla med Durable Functions 2.x utan kodändringar. I det här avsnittet visas några av de ändringar du måste göra när du uppgraderar dina version 1.x-funktioner till 2.x.
Host.json schema
Durable Functions 2.x använder ett nytt host.json schema. De viktigaste ändringarna från 1.x är:
- 
              "storageProvider"(och underavsnittet"azureStorage") för lagringsspecifik konfiguration.
- 
              "tracing"för spårning och loggningskonfiguration.
- 
              "notifications"(och underavsnittet) för konfiguration relaterad till"eventGrid"Event Grid-meddelanden.
Mer information finns i referensdokumentationen för Durable Functions host.json .
Ändringar av standardnamnet för uppgiftshubben
I version 1.x, om ett aktivitetshubbnamn inte angavs i host.json, var standardvärdet "DurableFunctionsHub". I version 2.x härleds nu standardnamnet för aktivitetshubben från namnet på funktionsappen. Om du inte har angett något namn på aktivitetshubben när du uppgraderar till 2.x fungerar koden med en ny aktivitetshubb, och alla orkestreringar under flygning kommer inte längre att ha ett program som bearbetar dem. För att kringgå detta kan du antingen uttryckligen ange namnet på aktivitetshubben till v1.x-standardvärdet "DurableFunctionsHub", eller så kan du följa vår vägledning om noll stilleståndstid för distribution för information om hur du hanterar icke-bakåtkompatibla ändringar för orkestreringar under flygning.
Ändringar i offentligt gränssnitt (endast.NET)
I version 1.x har de olika kontextobjekt som stöds av Durable Functions abstrakta basklasser som är avsedda att användas i enhetstestning. Som en del av Durable Functions 2.x ersätts dessa abstrakta basklasser med gränssnitt.
Följande tabell representerar de viktigaste ändringarna:
| 1.x | 2.x | 
|---|---|
| DurableOrchestrationClientBase | IDurableOrchestrationClientellerIDurableClient | 
| DurableOrchestrationContextellerDurableOrchestrationContextBase | IDurableOrchestrationContext | 
| DurableActivityContextellerDurableActivityContextBase | IDurableActivityContext | 
| OrchestrationClientAttribute | DurableClientAttribute | 
Om en abstrakt basklass innehöll virtuella metoder har dessa virtuella metoder ersatts med tilläggsmetoder som definierats i DurableContextExtensions.
function.json ändringar
I Durable Functions 1.x använder orkestreringsklientbindningen type och orchestrationClient. Version 2.x använder durableClient i stället.
Utlös händelseändringar
I Durable Functions 1.x resulterade ett anrop till API:et för att utlösa en händelse och specificera en instans som inte existerade i misslyckande utan att något felmeddelande genererades. Från och med 2.x resulterar höjning av en händelse till en obefintlig orkestrering i ett undantag.