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.
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 conSignalEntityAsync<TEntityInterface>(Action<T>)tipo no están disponibles en el entorno de trabajo aislado. Llame aEntities.CallEntityAsyncoEntities.SignalEntityAsyncdirectamente con nombres de operación basados en cadenas en lugar de usar interfaces de proxy tipadas. -
WaitForCompletionOrCreateCheckStatusResponseAsync: el
timeoutparámetro se quitó. Use unCancellationTokencon un tiempo de espera de cancelación en su lugar. -
Operaciones entre centros de tareas quitadas: las sobrecargas en proceso que se aceptan
taskHubNameyconnectionNamelos 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 procesoGetStatusAsync(IEnumerable<string>)no están disponibles. ÚseloGetAllInstancesAsynccon unOrchestrationQueryfiltro o llameGetInstanceAsync/PurgeInstanceAsyncindividualmente. -
Historial de orquestaciones movido:
DurableOrchestrationStatus.History(el incrustadoJArray) ya no forma parte del objeto de estado. Use la API independienteDurableTaskClient.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.EntityNamese reemplaza porEntityQuery.InstanceIdStartsWithyEntityQuery.IncludeDeletedse reemplaza porEntityQuery.IncludeTransient. -
Cambio de firma cleanEntityStorageAsync: toma un
CleanEntityStorageRequestobjeto conRemoveEmptyEntitiespropiedades yReleaseOrphanedLocksen lugar de parámetros bool. -
Nuevas API en trabajo aislado:
DurableTaskClient.GetOrchestrationHistoryAsyncy el método deTaskOrchestrationContext.GetFunctionContext()extensión no tiene equivalente en proceso.