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


Útmutató az önálló Durable Functions PowerShell SDK-hoz

A Durable Functions (DF) PowerShell SDK mostantól önálló modulként érhető el a PowerShell-gyűjteményben: AzureFunctions.PowerShell.Durable.SDK. Ez az SDK általánosan elérhető (GA), és a Durable Functions-alkalmazások PowerShell-lel való létrehozásához ajánlott módszer. 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.

Motiváció az önálló SDK mögött

Az előző DF SDK be lett építve a PowerShell nyelvi feldolgozójába. Ez a megközelítés azzal az előnnyel járt, hogy a Durable Functions-alkalmazások az Azure Functions PowerShell-felhasználók számára is létrehozhatóak. Azonban különböző hiányosságokkal 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 jellege miatt az DF SDK-nak óvatosnak kellett lennie a hibák kijavításával kapcsolatban, mivel a viselkedésváltozások kompatibilitástörő változást jelenthetnek.
  • 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. Az új önálló SDK-csomag használatának előnyei:

  • Ez az SDK számos, erősen igényelt fejlesztést tartalmaz, például a jobb kivételt, a null értékű kezelést és a szerializálási javításokat.
  • A csomag verziószáma a PowerShell-feldolgozótól függetlenül történik. Ez lehetővé teszi a felhasználók számára, hogy azonnal új funkciókat és javításokat építsenek be, amint elérhetők, ugyanakkor elkerülhetik 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# DF izolált SDK-ja.

Elavulási 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 és korábbi kiadásaihoz.

Azt tervezzük, hogy végül kiadjuk a PowerShell-feldolgozó ú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

Az ö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 7.4-s és újabb verzióihoz készült beépített Durable SDK-t, így a feldolgozót a külső SDK használatára kényszeríti.

Ha helyileg fut az Azure Functions Core Tools használatával, vegye fel ezt a beállítást a local.settings.json fájlba. Ha az Azure-ban fut, kövesse az alábbi lépéseket a választott eszközzel:

Cserélje le és <FUNCTION_APP_NAME> írja be <RESOURCE_GROUP_NAME> a függvényalkalmazás és az erőforráscsoport nevét.

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: telepíthető felügyelt függőségek használatával, vagy az alkalmazás tartalmával együtt. Ebben a szakaszban mindkét lehetőséget ismertetjük, de csak egyre van szükség.

1. telepítési lehetőség: Felügyelt függőségek használata

Az SDK felügyelt függőségként való telepítéséhez kövesse a felügyelt függőségekre vonatkozó ú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 truekövetkezőre 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, ahogyan az alábbi példában látható:

# 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.*'
}

2. telepítési lehetőség: Az SDK-modul belefoglalása az alkalmazás tartalmába

Ha az önálló DF SDK-t szeretné belefoglalni az alkalmazás tartalmába, kövesse a modulok alkalmazástartalmakba való belefoglalá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 a ".\Modules" címtá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ájlba. Ha például az alkalmazás sablonokkal lett formázva, 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 lépések szükségesek a következő PowerShell SDK használatához. 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.

SDK-referencia

Az SDK-parancsmagok és paramétereik teljes hivatkozását az AzureFunctions.PowerShell.Durable.SDK-modulban talál.

A parancsmaggal Get-Help az SDK-parancsmagok részletes leírását is lekérheti. Ehhez először importálnia kell a modult az előző szakaszban látható módon. Ezután futtathatja a következő parancsot a parancsmagok teljes listájának lekéréséhez:

Get-Help *-Durable*

Ha részletes segítséget szeretne kapni egy adott parancsmaggal kapcsolatban, beleértve a használati példákat, futtassa a következőt:

Get-Help Invoke-DurableOrchestration -Full

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 egy új parancsmag, amely lehetővé teszi a felhasználók számára, hogy alorchestratorokat használjanak a munkafolyamataikban.
  • Suspend-DurableOrchestration és Resume-DurableOrchestration új parancsmagok, amelyek lehetővé teszik a felhasználók számára a feladatkezelések felfüggesztését és folytatását.

Módosított parancsmagok

  • A Get-DurableTaskResult parancsmag mostantól csak egyetlen feladatot fogad el argumentumként, ahelyett, hogy elfogadná a feladatok listáját.
  • A New-DurableRetryOptions parancsmagot átnevezték New-DurableRetryPolicy-re (a régi névhez egy álnevet biztosítanak a visszamenőleges kompatibilitás érdekében).

Működésbeli 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 már nem hagyja figyelmen kívül. Ehelyett egy kivétel esetén a parancsmag propagálja ezt a kivételt a vezénylőnek, hogy felhasználói kóddal lehessen kezelni.
  • A null értékeket a rendszer már nem távolítja el egy (azaz WhenAll) hívás eredménylistájából Wait-DurableTask . Ez azt jelenti, hogy a jelölő nélküli Wait-DurableTask sikeres meghívásnak -Any ugyanolyan méretű tömböt kell visszaadnia, mint az ütemezett tevékenységek száma.

Támogatás kérése és visszajelzés biztosítása

Küldjön visszajelzést és javaslatokat az SDK GitHub-adattárában.