Megosztás a következőn keresztül:


Ú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:

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 truevan á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ásnak Wait-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.