Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Samostatný Durable Functions PowerShell SDK (AzureFunctions.PowerShell.Durable.SDK) se doporučuje při vytváření aplikací Durable Functions pomocí PowerShellu. Nahrazuje integrovanou sadu SDK rychlejším přehráváním (stejný modul jako izolovaná sada SDK v jazyce C#), nezávislou správou verzí a vylepšeným zpracováním výjimek, zpracováním hodnot null a serializací. Integrovaná sada SDK zůstává k dispozici pro PowerShell 7.4 a starší, ale bude odebrána v budoucí hlavní verzi pracovního procesu PowerShellu.
Kontrolní seznam pro migraci
Pomocí následujícího kontrolního seznamu můžete sledovat průběh jednotlivých kroků migrace:
| Krok | Oddíl |
|---|---|
| 1. Ověření požadavků | Prerequisites |
| 2. Povolení samostatné sady SDK | Povolení samostatné sady SDK |
| 3. Instalace balíčku SDK | Instalace balíčku SDK |
| 4. Importujte SDK | Import SDK |
| 5. Spuštění aplikace | Spuštění aplikace |
| 6. Kontrola změn rozhraní a chování | Migrace z vestavěného SDK |
Instalace samostatné sady SDK
Podle těchto kroků nainstalujte a povolte samostatnou sadu SDK ve stávající aplikaci.
Ověření předpokladů
Samostatná sada PowerShell SDK vyžaduje následující minimální verze:
- Azure Functions Runtime verze 4.16 a novější
- Azure Functions Core Tools v4.0.5095+ (pokud běží místně)
- Aplikace Azure Functions PowerShell pro PowerShell 7.4 nebo novější
Povolení samostatné sady SDK
K spuštění samostatné sady PowerShell SDK se vyžaduje následující nastavení aplikace:
- Název:
ExternalDurablePowerShellSDK - Hodnota:
"true"
Toto nastavení aplikace zakáže integrovanou sadu Durable SDK pro PowerShell verze 7.4 a vyšší, což vynutí pracovní proces používat externí sadu SDK.
Pokud používáte Nástroje Azure Functions Core Tools místně, měli byste do local.settings.json souboru přidat toto nastavení. Pokud používáte v Azure, použijte tento postup s nástrojem podle svého výběru:
Nahraďte <FUNCTION_APP_NAME> názvem vaší funkční aplikace a <RESOURCE_GROUP_NAME> názvem vaší skupiny prostředků.
az functionapp config appsettings set --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --settings ExternalDurablePowerShellSDK="true"
Instalace balíčku SDK
Máte dvě možnosti instalace balíčku sady SDK. Použijte spravované závislosti (doporučeno pro většinu aplikací) nebo zabalte modul s obsahem aplikace, pokud potřebujete přiřadit konkrétní verzi nebo pokud vaše nasazení nepodporuje spravované závislosti. Je potřeba jenom jedna možnost.
Možnost 1: Použití spravovaných závislostí (doporučeno)
Pokud chcete sadu SDK nainstalovat jako spravovanou závislost, postupujte podle pokynů ke spravovaným závislostem.
Nejprve se ujistěte, že váš host.json obsahuje managedDependency oddíl s enabled nastaveným na true.
{
"version": "2.0",
"managedDependency": {
"enabled": true
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
}
}
Pak v souboru zadejte položku sady SDK requirements.psd1 :
# This file enables modules to be automatically managed by the Functions service.
# See https://aka.ms/functionsmanageddependency for additional information.
#
@{
# For latest supported version, go to 'https://www.powershellgallery.com/packages/AzureFunctions.PowerShell.Durable.SDK/'.
'AzureFunctions.PowerShell.Durable.SDK' = '2.*'
}
Možnost 2: Zahrnutí modulu SDK do obsahu aplikace
Pokud chcete sadu SDK spojit s vaší aplikací, umístěte balíček SDK do ".\Modules" adresáře v kořenové složce vaší aplikace. Další informace najdete v tématu Zahrnutí modulů do obsahu aplikace.
Ve vašem kořenovém adresáři aplikace vytvořte adresář a stáhněte SDK.
Save-Module -Name AzureFunctions.PowerShell.Durable.SDK -AllowPrerelease -Path ".\Modules"
Importujte SDK
Přidejte do profile.ps1 souboru následující řádek pro import sady SDK při každém studeném spuštění:
Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop
Spuštění aplikace
Spusťte aplikaci pomocí func host start. Samostatná sada SDK je teď aktivní.
Migrace z vestavěné sady SDK
Pokud migrujete existující aplikaci z integrované sady SDK, projděte si následující změny rozhraní a chování.
Nové rutiny
| cmdlet | Description |
|---|---|
Invoke-DurableSubOrchestrator |
Volání podřízených orchestrátorů zevnitř pracovního postupu orchestrátoru. |
Suspend-DurableOrchestration |
Pozastavte spuštěnou instanci orchestrace. |
Resume-DurableOrchestration |
Obnovte dříve pozastavenou instanci orchestrace. |
Upravené rutiny
| Change | Podrobnosti |
|---|---|
Get-DurableTaskResult |
Nyní přijímá jeden Task argument jako argument místo seznamu úkolů. |
New-DurableRetryOptions → New-DurableRetryPolicy |
Přejmenován. Pro zpětnou kompatibilitu je k dispozici alias starého názvu. |
Změny chování
Zpracování výjimek v Wait-DurableTask
Výjimky vyvolané aktivitami naplánovanými vzorem Wait-DurableTask (model fan-out nebo fan-in) se už bezobslužně ignorují. Cmdlet teď předá výjimku do orchestrátoru, abyste ji mohli zpracovat ve svém kódu.
Vestavěné SDK – výjimky byly tiše pohlceny:
# Exceptions from failed activities were lost
$tasks = @()
$tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item1" -NoWait
$tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item2" -NoWait
$results = Wait-DurableTask -Task $tasks
# No error even if an activity failed
Samostatná sada SDK – výjimky se šíří do orchestrátoru:
try {
$tasks = @()
$tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item1" -NoWait
$tasks += Invoke-DurableActivity -FunctionName "RiskyActivity" -Input "item2" -NoWait
$results = Wait-DurableTask -Task $tasks
} catch {
# Handle the activity failure
Write-Host "An activity failed: $_"
}
Hodnoty null zachované ve Wait-DurableTask výsledcích
Hodnoty Null už nebudou vyřazeny ze seznamu výsledků vyvolání Wait-DurableTask (WhenAll). Úspěšné volání bez příznaku -Any teď vrátí pole se stejnou velikostí jako počet naplánovaných úkolů, včetně $null položek pro aktivity, které vrátily hodnotu null.
Integrovaná sada SDK – výsledky null byly vyřazeny:
# 3 tasks scheduled, but if one returned $null, results had only 2 items
$results = Wait-DurableTask -Task $tasks
$results.Count # Could be 2 instead of 3
Samostatná sada SDK – výsledky null se zachovají:
# 3 tasks scheduled, results always has 3 items
$results = Wait-DurableTask -Task $tasks
$results.Count # Always 3, with $null for activities that returned null
Referenční příručka SDK
Kompletní referenci o cmdletech najdete v tématu AzureFunctions.PowerShell.Durable.SDK Module. Po importu modulu můžete také spustit Get-Help *-Durable* pro seznam všech dostupných cmdletů nebo Get-Help <cmdlet-name> -Full pro podrobné použití.
Získání podpory
Nahlašujte chyby a žádosti o funkce v úložišti sady SDK GitHub.
Další kroky
- Vytvoření aplikace Durable Functions pomocí PowerShellu
- Vzory a koncepty funkce Durable
- Referenční příručka pro vývojáře PowerShellu pro Azure Functions