Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El SDK de PowerShell Durable Functions independiente (AzureFunctions.PowerShell.Durable.SDK) es el enfoque recomendado para crear aplicaciones Durable Functions con PowerShell. Reemplaza el SDK integrado por una lógica de reproducción más rápida (el mismo motor que el SDK aislado de C#), el control de versiones independiente y el control de excepciones mejorado, el control de valores NULL y la serialización. El SDK integrado permanece disponible para PowerShell 7.4 y versiones anteriores, pero se quitará en una futura versión principal del trabajador de PowerShell.
Lista de comprobación para la migración
Use la siguiente lista de comprobación para realizar un seguimiento del progreso en cada paso de migración:
| Paso | Section |
|---|---|
| 1. Comprobación de los requisitos previos | Requisitos previos |
| 2. Habilitación del SDK independiente | Habilitación del SDK independiente |
| 3. Instalación del paquete del SDK | Instalación del paquete del SDK |
| 4. Importación del SDK | Importación del SDK |
| 5. Ejecución de la aplicación | Ejecución de la aplicación |
| 6. Revisar la interfaz y los cambios de comportamiento | Migración desde el SDK integrado |
Instalación del SDK independiente
Siga estos pasos para instalar y habilitar el SDK independiente en la aplicación existente.
Comprobación de los requisitos previos
El SDK de PowerShell independiente requiere las siguientes versiones mínimas:
- Azure Functions Runtime: v4.16 o posteriores
- Azure Functions Core Tools: v4.0.5095 o posteriores (si se ejecuta localmente)
- Aplicación de PowerShell de Azure Functions para PowerShell 7.4 o posterior
Habilitación del SDK independiente
La siguiente configuración de aplicación es necesaria para ejecutar el SDK de PowerShell independiente:
- Nombre:
ExternalDurablePowerShellSDK - Valor:
"true"
Esta configuración de aplicación deshabilita el SDK duradero integrado para las versiones 7.4 y posteriores de PowerShell, lo que obliga al trabajador a usar el SDK externo.
Si se ejecuta localmente con Azure Functions Core Tools, debe agregar esta configuración al archivo local.settings.json. Si se ejecuta en Azure, siga estos pasos con la herramienta que prefiera:
Sustituya <FUNCTION_APP_NAME> y <RESOURCE_GROUP_NAME> por el nombre de su aplicación de función y grupo de recursos, respectivamente.
az functionapp config appsettings set --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --settings ExternalDurablePowerShellSDK="true"
Instalación del paquete del SDK
Tiene dos opciones para instalar el paquete del SDK. Usa dependencias administradas (recomendadas para la mayoría de las aplicaciones) o agrupa el módulo con el contenido de la aplicación si necesitas anclar una versión específica o la implementación no admite dependencias administradas. Solo se necesita una opción.
Opción 1: Uso de dependencias administradas (recomendado)
Para instalar el SDK como una dependencia administrada, siga las instrucciones de las dependencias administradas.
En primer lugar, asegúrese de que host.json contiene un apartado managedDependency con enabled configurado en true:
{
"version": "2.0",
"managedDependency": {
"enabled": true
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
}
}
A continuación, especifique una entrada para el SDK en el archivo 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.*'
}
Opción 2: Incluir el módulo sdk en el contenido de la aplicación
Para agrupar el SDK con la aplicación, coloque el paquete del SDK dentro de un ".\Modules" directorio en la raíz de la aplicación. Para obtener más información, consulte Inclusión de módulos en el contenido de la aplicación.
Desde la raíz de la aplicación, cree el directorio y descargue el SDK:
Save-Module -Name AzureFunctions.PowerShell.Durable.SDK -AllowPrerelease -Path ".\Modules"
Importación del SDK
Agregue la siguiente línea al archivo profile.ps1 para importar el SDK en cada inicialización en frío:
Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop
Ejecución de la aplicación
Inicie la aplicación con func host start. El SDK independiente ahora está activo.
Migración desde el SDK integrado
Si va a migrar una aplicación existente desde el SDK integrado, revise la siguiente interfaz y los cambios de comportamiento.
Nuevos cmdlets
| Cmdlet | Descripción |
|---|---|
Invoke-DurableSubOrchestrator |
Invoque suborquestadores dentro de un flujo de trabajo de orquestador. |
Suspend-DurableOrchestration |
Suspender una instancia de orquestación en ejecución. |
Resume-DurableOrchestration |
Reanude una instancia de orquestación suspendida anteriormente. |
Cmdlets modificados
| Cambio | Detalles |
|---|---|
Get-DurableTaskResult |
Ahora acepta un único Task como argumento en lugar de una lista de tareas. |
New-DurableRetryOptions → New-DurableRetryPolicy |
Se ha cambiado el nombre. Se proporciona un alias para el nombre anterior para la compatibilidad con versiones anteriores. |
Cambios de comportamiento
Control de excepciones en Wait-DurableTask
Las excepciones lanzadas por actividades programadas con Wait-DurableTask (patrón fan-out/fan-in) ya no se ignoran silenciosamente. El cmdlet ahora propaga la excepción al orquestador para que pueda controlarla en el código.
SDK integrado — las excepciones se ignoraban silenciosamente:
# 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
SDK independiente : las excepciones se propagan al orquestador:
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: $_"
}
Valores nulos conservados en los resultados de Wait-DurableTask
Los valores NULL ya no se quitan de la lista de resultados de una Wait-DurableTask invocación (WhenAll). Una llamada correcta sin el indicador -Any ahora devuelve una matriz del mismo tamaño que el número de tareas programadas, incluidas las entradas $null para las actividades que devolvieron null.
SDK integrado: se eliminaron los resultados nulos.
# 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
SDK independiente: se conservan los resultados nulos.
# 3 tasks scheduled, results always has 3 items
$results = Wait-DurableTask -Task $tasks
$results.Count # Always 3, with $null for activities that returned null
Referencia de SDK
Para obtener la referencia completa del cmdlet, consulte AzureFunctions.PowerShell.Durable.SDK Module. Después de importar el módulo, también puede ejecutar Get-Help *-Durable* para mostrar todos los cmdlets disponibles, o Get-Help <cmdlet-name> -Full para obtener un uso detallado.
Obtener soporte técnico
Informe de errores y solicitudes de características en el repositorio GitHub del SDK.
Pasos siguientes
- Crear una aplicación de Durable Functions con PowerShell
- Conceptos y patrones de Durable Functions
- referencia para desarrolladores de PowerShell para Azure Functions