Durable Functions: asignación de API de trabajo aislada en proceso

Esta referencia proporciona una asignación completa entre el SDK en proceso (2.x) y el SDK de trabajo aislado para Durable Functions. Use esta página junto con la guía de migración al actualizar el código.

API de cliente

En proceso (2.x) Trabajador aislado
IDurableOrchestrationClient DurableTaskClient
IDurableOrchestrationClient.StartNewAsync DurableTaskClient.ScheduleNewOrchestrationInstanceAsync
IDurableOrchestrationClient.GetStatusAsync DurableTaskClient.GetInstanceAsync
IDurableOrchestrationClient.ListInstancesAsync DurableTaskClient.GetAllInstancesAsync
IDurableOrchestrationClient.TerminateAsync DurableTaskClient.TerminateInstanceAsync
IDurableOrchestrationClient.SuspendAsync DurableTaskClient.SuspendInstanceAsync
IDurableOrchestrationClient.ResumeAsync DurableTaskClient.ResumeInstanceAsync
IDurableOrchestrationClient.RaiseEventAsync DurableTaskClient.RaiseEventAsync
IDurableOrchestrationClient.RewindAsync DurableTaskClient.RewindInstanceAsync
IDurableOrchestrationClient.RestartAsync DurableTaskClient.RestartAsync
IDurableOrchestrationClient.PurgeInstanceHistoryAsync DurableTaskClient.PurgeInstanceAsync o PurgeAllInstancesAsync
IDurableOrchestrationClient.CreateCheckStatusResponse DurableTaskClient.CreateCheckStatusResponseAsync (método de extensión, acepta HttpRequestData)
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (método de extensión, timeout reemplazado por CancellationToken)
IDurableOrchestrationClient.CreateHttpManagementPayload DurableTaskClient.CreateHttpManagementPayload (método de extensión)
DurableOrchestrationStatus OrchestrationMetadata
DurableOrchestrationStatus.History Se ha quitado del objeto de estado. Utilice DurableTaskClient.GetOrchestrationHistoryAsync en su lugar.
PurgeHistoryResult PurgeResult
OrchestrationStatusQueryCondition OrchestrationQuery
OrchestrationStatusQueryResult AsyncPageable<OrchestrationMetadata>

API de cliente eliminadas

Las siguientes API en proceso no tienen equivalentes en el SDK de trabajo aislado:

API eliminada Workaround
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync Sin equivalente
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) Uso GetInstanceAsync en un bucle o GetAllInstancesAsync con un filtro de consulta
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) Uso PurgeInstanceAsync en un bucle o PurgeAllInstancesAsync con un filtro
Sobrecargas entre centros de tareas (RaiseEventAsync, SignalEntityAsync, ReadEntityStateAsync con/taskHubNameconnectionName ) Solo se admiten las operaciones del mismo centro de tareas

API de cliente de entidad

En proceso (2.x) Trabajador aislado
IDurableEntityClient.SignalEntityAsync DurableTaskClient.Entities.SignalEntityAsync
IDurableEntityClient.ReadEntityStateAsync DurableTaskClient.Entities.GetEntityAsync
IDurableEntityClient.ListEntitiesAsync DurableTaskClient.Entities.GetAllEntitiesAsync
IDurableEntityClient.CleanEntityStorageAsync DurableTaskClient.Entities.CleanEntityStorageAsync (toma CleanEntityStorageRequest el objeto en lugar de los parámetros bool)

API de contexto de orquestación

En proceso (2.x) Trabajador aislado
IDurableOrchestrationContext TaskOrchestrationContext
IDurableOrchestrationContext.InstanceId TaskOrchestrationContext.InstanceId
IDurableOrchestrationContext.Name TaskOrchestrationContext.Name
IDurableOrchestrationContext.CurrentUtcDateTime TaskOrchestrationContext.CurrentUtcDateTime
IDurableOrchestrationContext.IsReplaying TaskOrchestrationContext.IsReplaying
IDurableOrchestrationContext.NewGuid TaskOrchestrationContext.NewGuid
IDurableOrchestrationContext.GetInput<T>() TaskOrchestrationContext.GetInput<T>() o inserte la entrada como parámetro: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input)
IDurableOrchestrationContext.SetOutput Quitado. Utiliza el valor devuelto de la función de orquestación.
IDurableOrchestrationContext.CallActivityAsync TaskOrchestrationContext.CallActivityAsync
IDurableOrchestrationContext.CallActivityWithRetryAsync TaskOrchestrationContext.CallActivityAsync con un TaskOptions parámetro para los detalles del reintento
IDurableOrchestrationContext.CallSubOrchestratorAsync TaskOrchestrationContext.CallSubOrchestratorAsync
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync TaskOrchestrationContext.CallSubOrchestratorAsync con un TaskOptions parámetro para los detalles del reintento
IDurableOrchestrationContext.ContinueAsNew TaskOrchestrationContext.ContinueAsNew (consulte cambios de comportamiento para ver las diferencias predeterminadas)
IDurableOrchestrationContext.CallHttpAsync TaskOrchestrationContext.CallHttpAsync
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken). Se ha quitado el parámetro de estado.
IDurableOrchestrationContext.WaitForExternalEvent(string) (no genérico) Quitado. Utilice WaitForExternalEvent<T>(string, CancellationToken).
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (con defaultValue) Quitado. Use WaitForExternalEvent<T>(string, TimeSpan, CancellationToken), que lanza TaskCanceledException en caso de tiempo de espera.
IDurableOrchestrationContext.ParentInstanceId TaskOrchestrationContext.Parent.InstanceId
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) TaskOrchestrationContext.CreateReplaySafeLogger<T>() o TaskOrchestrationContext.CreateReplaySafeLogger(string)
IDurableOrchestrationContext.CreateEntityProxy<T> Quitado. Use Entities.CallEntityAsync o Entities.SignalEntityAsync directamente.
IDurableOrchestrationContext.CallEntityAsync TaskOrchestrationContext.Entities.CallEntityAsync
IDurableOrchestrationContext.SignalEntity TaskOrchestrationContext.Entities.SignalEntityAsync
IDurableOrchestrationContext.LockAsync TaskOrchestrationContext.Entities.LockEntitiesAsync
IDurableOrchestrationContext.IsLocked TaskOrchestrationContext.Entities.InCriticalSection()
RetryOptions TaskOptions con TaskRetryOptions
DurableActivityContext Sin equivalente
DurableActivityContext.GetInput<T>() Inserte la entrada como parámetro: MyActivity([ActivityTrigger] T input)
DurableHttpRequest (Espacio de nombres de WebJobs) DurableHttpRequest (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http espacio de nombres)
DurableHttpResponse (Espacio de nombres de WebJobs) DurableHttpResponse (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http espacio de nombres)

API de entidad

En proceso (2.x) Trabajador aislado
IDurableEntityContext TaskEntityContext
IDurableEntityContext.EntityName TaskEntityContext.Id.Name
IDurableEntityContext.EntityKey TaskEntityContext.Id.Key
IDurableEntityContext.OperationName TaskEntityOperation.Name
IDurableEntityContext.FunctionBindingContext Quitado. Agregue FunctionContext como parámetro de entrada.
IDurableEntityContext.HasState TaskEntityOperation.State.HasState
IDurableEntityContext.GetState TaskEntityOperation.State.GetState
IDurableEntityContext.SetState TaskEntityOperation.State.SetState
IDurableEntityContext.DeleteState TaskEntityOperation.State.SetState(null)
IDurableEntityContext.GetInput TaskEntityOperation.GetInput
IDurableEntityContext.Return Quitado. Use el valor devuelto del método en su lugar.
IDurableEntityContext.SignalEntity TaskEntityContext.SignalEntity. Las señales programadas usan SignalEntityOptions.SignalTime en lugar de una sobrecarga de parámetros DateTime.
IDurableEntityContext.StartNewOrchestration TaskEntityContext.ScheduleNewOrchestration. El identificador de instancia se establece mediante StartOrchestrationOptions.InstanceId en lugar de un parámetro de cadena.
IDurableEntityContext.DispatchAsync TaskEntityDispatcher.DispatchAsync. Se han quitado los parámetros del constructor; use la inserción de dependencia estándar en su lugar.
IDurableEntityContext.BatchSize Quitado
IDurableEntityContext.BatchPosition Quitado

Cambios de comportamiento

Revise estos cambios importantes en el comportamiento antes de probar la aplicación migrada.

Se ha cambiado el valor predeterminado de serialización

El serializador predeterminado ha cambiado de Newtonsoft.Json a System.Text.Json. Para obtener opciones de configuración, consulte Serialization and persistence in Durable Functions.

Advertencia

ContinueAsNuevo cambio predeterminado: el preserveUnprocessedEvents parámetro predeterminado cambió de false (2.x) a true (aislado). Si la orquestación utiliza ContinueAsNew y depende de que se descarten los eventos no procesados, pase preserveUnprocessedEvents: false explícitamente.

Note

Cambio predeterminado restartAsync: El parámetro restartWithNewInstanceId, cuyo valor predeterminado era true (2.x), ha cambiado a false (aislado). Si el código llama a RestartAsync y depende de que se genere un nuevo identificador de instancia, pase restartWithNewInstanceId: true explícitamente.

Otros cambios de comportamiento

  • Eliminación del proxy de entidad: CreateEntityProxy<T> y las sobrecargas de delegados con SignalEntityAsync<TEntityInterface>(Action<T>) tipo no están disponibles en el entorno de trabajo aislado. Llame a Entities.CallEntityAsync o Entities.SignalEntityAsync directamente con nombres de operación basados en cadenas en lugar de usar interfaces de proxy tipadas.
  • WaitForCompletionOrCreateCheckStatusResponseAsync: el timeout parámetro se quitó. Use un CancellationToken con un tiempo de espera de cancelación en su lugar.
  • Operaciones entre centros de tareas quitadas: las sobrecargas en proceso que se aceptan taskHubName y connectionName los parámetros no están disponibles en el trabajo aislado. Solo se admiten las operaciones del mismo centro de tareas.
  • Operaciones por lotes por identificador quitadas: las sobrecargas y PurgeInstanceHistoryAsync(IEnumerable<string>) en proceso GetStatusAsync(IEnumerable<string>) no están disponibles. Úselo GetAllInstancesAsync con un OrchestrationQuery filtro o llame GetInstanceAsync/PurgeInstanceAsync individualmente.
  • Historial de orquestaciones movido: DurableOrchestrationStatus.History (el incrustado JArray) ya no forma parte del objeto de estado. Use la API independiente DurableTaskClient.GetOrchestrationHistoryAsync .
  • Se han quitado los parámetros del constructor Entity DispatchAsync: las clases de entidad se activan a través de la inserción de dependencias estándar. Registre las dependencias de la entidad en Program.cs.
  • Cambios de filtro de consulta de entidad: EntityQuery.EntityName se reemplaza por EntityQuery.InstanceIdStartsWithy EntityQuery.IncludeDeleted se reemplaza por EntityQuery.IncludeTransient.
  • Cambio de firma cleanEntityStorageAsync: toma un CleanEntityStorageRequest objeto con RemoveEmptyEntities propiedades y ReleaseOrphanedLocks en lugar de parámetros bool.
  • Nuevas API en trabajo aislado: DurableTaskClient.GetOrchestrationHistoryAsync y el método de TaskOrchestrationContext.GetFunctionContext() extensión no tiene equivalente en proceso.