Útmutató az önálló Durable Functions PowerShell SDK-hoz
A Durable Functions (DF) PowerShell SDK előzetes verzióban érhető el önálló csomagként a PowerShell-galéria: AzureFunctions.PowerShell.Durable.SDK
.
Ha ez az SDK-csomag ga,ez lesz az ajánlott eszköz Durable Functions alkalmazások PowerShell-lel való létrehozásához. Ebben a cikkben ismertetjük ennek a változásnak az előnyeit, és hogy milyen változások várhatók az új csomag elfogadásakor.
Megjegyzés
Ez a csomag jelenleg előzetes verzióban érhető el.
Motiváció az önálló SDK mögött
Az előző DF SDK be van építve a PowerShell nyelvi feldolgozójába. Ez a megközelítés azzal az előnnyel járt, hogy Durable Functions alkalmazásokat a Azure Functions PowerShell-felhasználók számára is létrehozható. Ugyanakkor számos hiányossággal is járt:
- Az új funkciók, hibajavítások és egyéb módosítások a PowerShell-feldolgozó kiadási ütemétől függtek.
- A PowerShell-feldolgozó automatikus frissítési természete miatt az DF SDK-nak konzervatívnak kellett lennie a hibák kijavítása tekintetében, mivel a viselkedésváltozások törést okozhatnak.
- A beépített DF SDK által használt visszajátszási algoritmus elavult: a többi DF SDK már gyorsabb és megbízhatóbb implementációt használt.
Önálló DF PowerShell SDK-csomag létrehozásával meg tudjuk oldani ezeket a hiányosságokat. Ezek az új önálló SDK-csomag használatának előnyei:
- Ez az SDK számos, nagy mértékben igényelt fejlesztést tartalmaz, például a jobb kivételeket, a null értékű kezeléseket és a szerializációs javításokat.
- A csomag a PowerShell-feldolgozótól függetlenül verziószámozott. Ez lehetővé teszi a felhasználók számára, hogy azonnal beépítsék az új funkciókat és javításokat, amint elérhetők, miközben elkerülik az automatikus frissítések kompatibilitástörő változásait.
- A visszajátszási logika gyorsabb és megbízhatóbb: ugyanazt a visszajátszási motort használja, mint a C#-hoz készült DF izolált SDK-t.
Elavult terv a beépített DF PowerShell SDK-hoz
A PowerShell-feldolgozó beépített DF SDK-ja továbbra is elérhető marad a PowerShell 7.4-es, 7.2-es és korábbi kiadásaihoz.
Azt tervezzük, hogy végül kiadjuk a PowerShell-feldolgozó egy új főverzióját a beépített SDK nélkül. Ezen a ponton a felhasználóknak külön kell telepíteniük az SDK-t ezzel az önálló csomagtal; a telepítési lépéseket az alábbiakban ismertetjük.
Az SDK telepítése és engedélyezése
Ebből a szakaszból megtudhatja, hogyan telepítheti és engedélyezheti az új önálló SDK-t a meglévő alkalmazásban.
Előfeltételek
Az önálló PowerShell SDK-nak a következő minimális verziókra van szüksége:
- Azure Functions Runtime v4.16+
- Azure Functions Core Tools v4.0.5095+ (helyi futtatás esetén)
- Azure Functions PowerShell-alkalmazás PowerShell 7.2-s vagy újabb verziójához
Az önálló DF SDK-ra való bejelentkezés
A különálló PowerShell SDK futtatásához a következő alkalmazásbeállítás szükséges:
- Név:
ExternalDurablePowerShellSDK
- Érték:
"true"
Ez az alkalmazásbeállítás letiltja a PowerShell-hez készült beépített Tartós SDK 7.2-s és újabb verzióit, ami arra kényszeríti a feldolgozót, hogy használja a külső SDK-t.
Ha helyileg fut a Azure Functions Core Tools használatával, ezt a beállítást hozzá kell adnia a local.settings.json
fájlhoz. Ha az Azure-ban fut, kövesse az alábbi lépéseket a választott eszközzel:
Cserélje le <FUNCTION_APP_NAME>
a és <RESOURCE_GROUP_NAME>
a értéket a függvényalkalmazás és az erőforráscsoport nevére.
az functionapp config appsettings set --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --settings ExternalDurablePowerShellSDK="true"
Az SDK telepítése és importálása
Az SDK-csomag telepítésének két lehetősége van: felügyelt függőségként vagy egyéni modulként telepíthető. Ebben a szakaszban mindkét lehetőséget ismertetjük, de csak az egyikre van szükség.
1. telepítési lehetőség: Felügyelt függőségek használata
Ha az SDK-t felügyelt függőségként szeretné telepíteni, kövesse a felügyelt függőségekkel kapcsolatos útmutatást. A részletekért tekintse át az útmutatót.
Összefoglalva, először meg kell győződnie arról, hogy tartalmaz host.json
egy szakaszt managedDependency
, enabled
amelynek tulajdonsága a következőre true
van állítva: . Az alábbi példa host.json
megfelel ennek a követelménynek:
{
"version": "2.0",
"managedDependency": {
"enabled": true
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
},
}
Ezután egyszerűen meg kell adnia egy bejegyzést az DF SDK-hoz a requirements.psd1
fájlban, az alábbi példához hasonlóan:
# 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' = '1.*'
}
2. telepítési lehetőség: Egyéni modulok használata
Az önálló DF SDK egyéni modulként való telepítéséhez kövesse az alkalmazásszintű modulok mappájának létrehozásával kapcsolatos útmutatást. A részletekért tekintse át a fent említett dokumentumokat.
Összefoglalva, az SDK-csomagot az ".\Modules"
alkalmazás gyökerében található könyvtárba kell helyeznie.
Például az alkalmazás gyökérkönyvtárából, majd egy ".\Modules"
könyvtár létrehozása után a különálló SDK-t a modulok könyvtárába töltheti le a következő módon:
Save-Module -Name AzureFunctions.PowerShell.Durable.SDK -AllowPrerelease -Path ".\Modules"
Az SDK importálása
Az utolsó lépés az SDK importálása a kód munkamenetébe. Ehhez importálja a PowerShell SDK-t Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop
a profile.ps1
fájlban.
Ha például az alkalmazás sablonokkal lett állványra állítva, előfordulhat, hogy a profile.ps1
fájl a következőképpen néz ki:
# 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
Ezek a következő PowerShell SDK használatához szükséges lépések. Futtassa az alkalmazást a szokásos módon a terminálon keresztül func host start
az SDK használatának megkezdéséhez.
Migrálási útmutató
Ebben a szakaszban ismertetjük az új SDK használatakor várható felületi és viselkedési változásokat.
Új parancsmagok
Invoke-DurableSubOrchestrator -FunctionName <Name> -Input <Input>
egy új parancsmag, amely lehetővé teszi a felhasználók számára, hogy alorchestratorokat használjanak a munkafolyamataikban.
Módosított parancsmagok
- A parancsmag
Get-DurableTaskResult -Task <task>
mostantól csak egyetlen feladatot fogad el argumentumként, ahelyett, hogy elfogadná a feladatok listáját.
Viselkedési változások
- Az ütemezett
Wait-DurableTask
tevékenységek által (a fan-Out/Fan-In mintához hasonlóan) kidobott kivételeket a rendszer nem hagyja figyelmen kívül csendesen. Ehelyett egy kivétel esetében a parancsmag propagálja ezt a kivételt a vezénylőre, hogy a felhasználókód kezelje. - A null értékeket a rendszer már nem távolítja el egy
Wait-DurableTask
(azaz WhenAll) hívás eredménylistájából. Ez azt jelenti, hogy a-Any
jelölő nélküli sikeres meghívásnakWait-DurableTask
egy olyan tömböt kell visszaadnia, amely ugyanolyan méretű, mint az ütemezett tevékenységek száma.
Hol kérhet támogatást, küldhet visszajelzést, és javasolhat módosításokat?
A kiadás előzetes verziójának fázisában az önálló SDK néhány további módosítást is bevezethet. Ezeket a változásokat a közösség befolyásolhatja, ezért minden visszajelzést és javaslatot jelentsen az SDK új GitHub-adattárának.