Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Essa referência fornece um mapeamento abrangente entre o SDK em processo (2.x) e o SDK de trabalho isolado para Durable Functions. Use esta página junto com o guia de migração ao atualizar seu código.
APIs do cliente
| Em processo (2.x) | Trabalhador isolado |
|---|---|
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 ou PurgeAllInstancesAsync |
IDurableOrchestrationClient.CreateCheckStatusResponse |
DurableTaskClient.CreateCheckStatusResponseAsync (método de extensão, leva HttpRequestData) |
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync |
DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (método de extensão, timeout substituído por CancellationToken) |
IDurableOrchestrationClient.CreateHttpManagementPayload |
DurableTaskClient.CreateHttpManagementPayload (método de extensão) |
DurableOrchestrationStatus |
OrchestrationMetadata |
DurableOrchestrationStatus.History |
Removido do objeto de status. Use DurableTaskClient.GetOrchestrationHistoryAsync em seu lugar. |
PurgeHistoryResult |
PurgeResult |
OrchestrationStatusQueryCondition |
OrchestrationQuery |
OrchestrationStatusQueryResult |
AsyncPageable<OrchestrationMetadata> |
APIs de cliente removidas
As seguintes APIs em processo não têm equivalentes no SDK de trabalho isolado:
| API removida | Workaround |
|---|---|
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync |
Nenhum equivalente |
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) |
Usar GetInstanceAsync em um loop ou GetAllInstancesAsync com um filtro de consulta |
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) |
Usar PurgeInstanceAsync em um loop ou PurgeAllInstancesAsync com um filtro |
Sobrecargas entre hubs de tarefas (RaiseEventAsync, ReadEntityStateAsyncSignalEntityAsynccomconnectionNametaskHubName/ ) |
Há suporte apenas para operações do mesmo hub de tarefas |
APIs de cliente de entidade
| Em processo (2.x) | Trabalhador isolado |
|---|---|
IDurableEntityClient.SignalEntityAsync |
DurableTaskClient.Entities.SignalEntityAsync |
IDurableEntityClient.ReadEntityStateAsync |
DurableTaskClient.Entities.GetEntityAsync |
IDurableEntityClient.ListEntitiesAsync |
DurableTaskClient.Entities.GetAllEntitiesAsync |
IDurableEntityClient.CleanEntityStorageAsync |
DurableTaskClient.Entities.CleanEntityStorageAsync (usa CleanEntityStorageRequest objeto em vez de parâmetros bool) |
APIs de contexto de orquestração
| Em processo (2.x) | Trabalhador isolado |
|---|---|
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>() ou injete a entrada como um parâmetro: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input) |
IDurableOrchestrationContext.SetOutput |
Removido. Use o valor retornado da função do orquestrador. |
IDurableOrchestrationContext.CallActivityAsync |
TaskOrchestrationContext.CallActivityAsync |
IDurableOrchestrationContext.CallActivityWithRetryAsync |
TaskOrchestrationContext.CallActivityAsync com um TaskOptions parâmetro para detalhes de repetição |
IDurableOrchestrationContext.CallSubOrchestratorAsync |
TaskOrchestrationContext.CallSubOrchestratorAsync |
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync |
TaskOrchestrationContext.CallSubOrchestratorAsync com um TaskOptions parâmetro para detalhes de repetição |
IDurableOrchestrationContext.ContinueAsNew |
TaskOrchestrationContext.ContinueAsNew (consulte alterações comportamentais para diferenças padrão) |
IDurableOrchestrationContext.CallHttpAsync |
TaskOrchestrationContext.CallHttpAsync |
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) |
TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken). Parâmetro de estado removido. |
IDurableOrchestrationContext.WaitForExternalEvent(string) (não genérico) |
Removido. Use WaitForExternalEvent<T>(string, CancellationToken). |
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (com defaultValue) |
Removido. Use WaitForExternalEvent<T>(string, TimeSpan, CancellationToken), que lança TaskCanceledException o tempo limite. |
IDurableOrchestrationContext.ParentInstanceId |
TaskOrchestrationContext.Parent.InstanceId |
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) |
TaskOrchestrationContext.CreateReplaySafeLogger<T>() ou TaskOrchestrationContext.CreateReplaySafeLogger(string) |
IDurableOrchestrationContext.CreateEntityProxy<T> |
Removido. Use Entities.CallEntityAsync ou Entities.SignalEntityAsync diretamente. |
IDurableOrchestrationContext.CallEntityAsync |
TaskOrchestrationContext.Entities.CallEntityAsync |
IDurableOrchestrationContext.SignalEntity |
TaskOrchestrationContext.Entities.SignalEntityAsync |
IDurableOrchestrationContext.LockAsync |
TaskOrchestrationContext.Entities.LockEntitiesAsync |
IDurableOrchestrationContext.IsLocked |
TaskOrchestrationContext.Entities.InCriticalSection() |
RetryOptions |
TaskOptions com TaskRetryOptions |
DurableActivityContext |
Nenhum equivalente |
DurableActivityContext.GetInput<T>() |
Insira a entrada como um parâmetro: MyActivity([ActivityTrigger] T input) |
DurableHttpRequest (Namespace WebJobs) |
DurableHttpRequest (namespace Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http) |
DurableHttpResponse (Namespace WebJobs) |
DurableHttpResponse (namespace Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http) |
APIs de entidade
| Em processo (2.x) | Trabalhador isolado |
|---|---|
IDurableEntityContext |
TaskEntityContext |
IDurableEntityContext.EntityName |
TaskEntityContext.Id.Name |
IDurableEntityContext.EntityKey |
TaskEntityContext.Id.Key |
IDurableEntityContext.OperationName |
TaskEntityOperation.Name |
IDurableEntityContext.FunctionBindingContext |
Removido. Adicione FunctionContext como um 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 |
Removido. Em vez disso, use o valor retornado do método. |
IDurableEntityContext.SignalEntity |
TaskEntityContext.SignalEntity. Os sinais agendados utilizam SignalEntityOptions.SignalTime em vez de uma sobrecarga de parâmetro DateTime. |
IDurableEntityContext.StartNewOrchestration |
TaskEntityContext.ScheduleNewOrchestration. O ID da instância é configurado via StartOrchestrationOptions.InstanceId em vez de por um parâmetro de cadeia de caracteres. |
IDurableEntityContext.DispatchAsync |
TaskEntityDispatcher.DispatchAsync. Parâmetros do construtor removidos; em vez disso, use DI padrão. |
IDurableEntityContext.BatchSize |
Removido |
IDurableEntityContext.BatchPosition |
Removido |
Alterações comportamentais
Examine essas alterações de comportamento de falha antes de testar seu aplicativo migrado.
Padrão de serialização alterado
O serializador padrão foi alterado de Newtonsoft.Json para System.Text.Json. Para obter opções de configuração, consulte Serialização e persistência em Durable Functions.
Aviso
Alteração padrão ContinueAsNew: o preserveUnprocessedEvents padrão do parâmetro foi alterado de false (2.x) para true (isolado). Se a orquestração usar ContinueAsNew e depender do descarte de eventos não processados, passe preserveUnprocessedEvents: false explicitamente.
Note
Alteração padrão do RestartAsync: o padrão do parâmetro restartWithNewInstanceId foi alterado de true (2.x) para false (isolado). Se o código chamar RestartAsync e depender de um novo ID de instância a ser gerado, passe restartWithNewInstanceId: true explicitamente.
Outras alterações comportamentais
-
Remoção de proxy de entidade:
CreateEntityProxy<T>e as sobrecargas de delegado digitadasSignalEntityAsync<TEntityInterface>(Action<T>)não estão disponíveis no trabalho isolado. ChameEntities.CallEntityAsyncouEntities.SignalEntityAsyncdiretamente com nomes de operação baseados em cadeia de texto, em vez de usar interfaces de proxy tipadas. -
WaitForCompletionOrCreateCheckStatusResponseAsync: o
timeoutparâmetro foi removido. Em vez disso, use umCancellationTokencom um tempo limite de cancelamento. -
Operações entre hubs de tarefas removidas: as sobrecargas em processo aceitas
taskHubNameeconnectionNameos parâmetros não estão disponíveis no trabalho isolado. Há suporte apenas para operações do mesmo hub de tarefas. -
Operações em lote por ID removidas: as sobrecargas e
PurgeInstanceHistoryAsync(IEnumerable<string>)o processoGetStatusAsync(IEnumerable<string>)não estão disponíveis. UseGetAllInstancesAsynccom umOrchestrationQueryfiltro ou chameGetInstanceAsync/PurgeInstanceAsyncindividualmente. -
O histórico de orquestração foi movido:
DurableOrchestrationStatus.History(o embutidoJArray) não faz mais parte do objeto de status. Use a API separadaDurableTaskClient.GetOrchestrationHistoryAsync. - Parâmetros do construtor Entity DispatchAsync removidos: as classes de entidade são ativadas por meio da injeção de dependência padrão. Registre as dependências de sua entidade em
Program.cs. -
Alterações de filtro de consulta de entidade:
EntityQuery.EntityNameé substituído porEntityQuery.InstanceIdStartsWith, eEntityQuery.IncludeDeletedé substituído por .EntityQuery.IncludeTransient -
Alteração da assinatura CleanEntityStorageAsync: usa um
CleanEntityStorageRequestobjeto comRemoveEmptyEntitieseReleaseOrphanedLockspropriedades em vez de parâmetros bool. -
Novas APIs no trabalho isolado:
DurableTaskClient.GetOrchestrationHistoryAsynce o método deTaskOrchestrationContext.GetFunctionContext()extensão não têm equivalente em processo.