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.
PowerShell SDK pro Durable Functions je nyní k dispozici jako samostatný modul v galerii PowerShell: AzureFunctions.PowerShell.Durable.SDK
.
Tato sada SDK je teď obecně dostupná (GA) a je doporučeným přístupem k vytváření aplikací Durable Functions pomocí PowerShellu. V tomto článku vysvětlujeme výhody této změny a jaké změny můžete očekávat při přijetí tohoto nového balíčku.
Motivace za samostatnou sadou SDK
Předchozí sada DF SDK byla integrovaná do pracovního procesu jazyka PowerShell. Tento přístup přinesl výhodu, že aplikace Durable Functions můžou být vytvořené mimo tuto možnost pro uživatele Azure Functions PowerShellu. Došlo však také k různým nedostatkům:
- Nové funkce, opravy chyb a další změny byly závislé na tempu vydávání pracovních procesů PowerShellu.
- Vzhledem k povaze automatického upgradu pracovního procesu PowerShellu je potřeba, aby sada DF SDK byla konzervativní, aby opravil chyby, protože jakékoli změny chování by mohly představovat zásadní změnu.
- Algoritmus přehrání, který využívá integrovaná sada DF SDK, byla zastaralá: jiné sady SDK DF už využívaly rychlejší a spolehlivější implementaci.
Vytvořením samostatného balíčku sady DF PowerShell SDK můžeme tyto nedostatky překonat. Toto jsou výhody využití tohoto nového samostatného balíčku SDK:
- Tato sada SDK zahrnuje řadu vysoce požadovaných vylepšení, jako je lepší zpracování výjimek a zpracování hodnot null a opravy serializace.
- Balíček se provádí nezávisle na pracovním procesu PowerShellu. To uživatelům umožňuje začlenit nové funkce a opravy, jakmile budou k dispozici, a zároveň se vyhnout zásadním změnám z automatických upgradů.
- Logika přehrávání je rychlejší a spolehlivější: používá stejný modul pro přehrání jako izolovaná sada SDK DF pro C#.
Plán vyřazení integrované sady DF PowerShell SDK
Integrovaná sada DF SDK v pracovním procesu PowerShellu zůstane k dispozici pro PowerShell 7.4 a předchozí verze.
Plánujeme nakonec vydat novou hlavní verzi pracovního procesu PowerShellu bez integrované sady SDK. V tomto okamžiku by uživatelé museli sadu SDK nainstalovat samostatně pomocí tohoto samostatného balíčku; Postup instalace je popsaný níže.
Instalace a povolení sady SDK
V této části se dozvíte, jak nainstalovat a povolit novou samostatnou sadu SDK ve stávající aplikaci.
Požadavky
Samostatná sada PowerShell SDK vyžaduje následující minimální verze:
- Modul runtime Azure Functions verze 4.16 nebo novější
- Azure Functions Core Tools v4.0.5095+ (pokud běží místně)
- Aplikace Azure Functions PowerShell pro PowerShell 7.4 nebo novější
Přihlášení k samostatné DF 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ž způsobí, že pracovní proces použije 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>
a <RESOURCE_GROUP_NAME>
nahraďte název vaší aplikace funkcí a skupiny prostředků.
az functionapp config appsettings set --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --settings ExternalDurablePowerShellSDK="true"
Instalace a import sady SDK
Máte dvě možnosti instalace balíčku SDK: můžete ho nainstalovat pomocí spravovaných závislostí nebo sbalit obsah aplikace. V této části popisujeme obě možnosti, ale potřebujeme jenom jednu z nich.
Možnost instalace 1: Použití spravovaných závislostí
Pokud chcete sadu SDK nainstalovat jako spravovanou závislost, budete muset postupovat podle pokynů ke spravovaným závislostem. Podrobnosti najdete v doprovodných materiálech.
V souhrnu nejprve musíte zajistit host.json
, aby obsahoval managedDependency
oddíl s vlastností nastavenou enabled
na true
. Níže je příklad host.json
, který splňuje tento požadavek:
{
"version": "2.0",
"managedDependency": {
"enabled": true
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
},
}
Pak stačí zadat položku pro sadu DF SDK ve vašem requirements.psd1
souboru, jak je znázorněno v následujícím příkladu:
# 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 instalace 2: Zahrnutí modulu SDK do obsahu aplikace
Pokud chcete do obsahu aplikace zahrnout samostatnou sadu DF SDK, musíte postupovat podle pokynů týkajících se zahrnutí modulů do obsahu aplikace. Podrobnosti najdete v výše uvedených dokumentech.
Stručně řečeno, budete muset balíček sady SDK umístit do ".\Modules"
adresáře umístěného v kořenovém adresáři aplikace.
Například z kořenového adresáře vaší aplikace a po vytvoření ".\Modules"
adresáře můžete stáhnout samostatnou sadu SDK do adresáře modulů, například:
Save-Module -Name AzureFunctions.PowerShell.Durable.SDK -AllowPrerelease -Path ".\Modules"
Import sady SDK
Posledním krokem je import sady SDK do relace kódu. Uděláte to tak, že do souboru Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop
naimportujete sadu PowerShell SDKprofile.ps1
.
Pokud se vaše aplikace například vygenerovala prostřednictvím šablon, profile.ps1
může soubor vypadat takto:
# Azure Functions profile.ps1
#
# This profile.ps1 will get executed every "cold start" of your Function App.
# "cold start" occurs when:
#
# * A Function App starts up for the very first time
# * A Function App starts up after being de-allocated due to inactivity
#
# You can define helper functions, run commands, or specify environment variables
# NOTE: any variables defined that are not environment variables will get reset after the first execution
# Authenticate with Azure PowerShell using MSI.
# Remove this if you are not planning on using MSI or Azure PowerShell.
if ($env:MSI_SECRET) {
Disable-AzContextAutosave -Scope Process | Out-Null
Connect-AzAccount -Identity
}
# Uncomment the next line to enable legacy AzureRm alias in Azure PowerShell.
# Enable-AzureRmAlias
# You can also define functions or aliases that can be referenced in any of your PowerShell functions.
# Import standalone PowerShell SDK
Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop
Toto jsou všechny kroky potřebné k využití další sady PowerShell SDK. Spusťte aplikaci normálně, a to tak, že v func host start
terminálu začnete používat sadu SDK.
Referenční příručka SDK
Kompletní referenční informace o rutinách sady SDK a jejich parametrech najdete v modulu AzureFunctions.PowerShell.Durable.SDK .
Pomocí cmdletu Get-Help
můžete také získat podrobné popisy cmdletů sady SDK. Abyste to mohli udělat, musíte nejprve importovat modul, jak je znázorněno v předchozí části. Potom můžete spuštěním následujícího příkazu získat celý seznam rutin:
Get-Help *-Durable*
Pokud chcete získat podrobnou nápovědu ke konkrétní rutině, včetně příkladů použití, spusťte:
Get-Help Invoke-DurableOrchestration -Full
Průvodce migrací
V této části popisujeme změny rozhraní a chování, které můžete očekávat při využití nové sady SDK.
Nové rutiny
-
Invoke-DurableSubOrchestrator
je nový cmdlet, který uživatelům umožňuje využívat suborchestrátory ve svých pracovních proudech. -
Suspend-DurableOrchestration
aResume-DurableOrchestration
jsou to nové rutiny, které uživatelům umožňují pozastavit a obnovit orchestraci.
Upravené rutiny
- Rutina
Get-DurableTaskResult
teď přijímá pouze jeden úkol jako argument místo přijetí seznamu úkolů. - Cmdlet
New-DurableRetryOptions
se přejmenuje naNew-DurableRetryPolicy
(pro starý název je poskytován alias kvůli zpětné kompatibilitě).
Změny chování
- Výjimky vyvolané aktivitami
Wait-DurableTask
naplánovanými (jako ve vzoru Fan-Out/Fan-In) se už bezobslužně ignorují. Namísto toho při výjimce se tato výjimka předá orchestrátoru, aby ji mohl zpracovat uživatelský kód. - Hodnoty null se už nezahazují ze seznamu
Wait-DurableTask
výsledků vyvolání (tj. WhenAll). To znamená, že úspěšné vyvoláníWait-DurableTask
bez příznaku-Any
by mělo vrátit pole se stejnou velikostí jako počet naplánovaných úkolů.
Získejte podporu a poskytněte zpětnou vazbu
Ohlaste nám prosím zpětnou vazbu a návrhy do úložiště GitHub sady SDK.