Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette référence fournit un mappage complet entre le SDK in-process (2.x) et le SDK Worker isolé pour Durable Functions. Utilisez cette page en même temps que le guide de migration lors de la mise à jour de votre code.
API clientes
| En cours (2.x) | Travailleur isolé |
|---|---|
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éthode d’extension, prend HttpRequestData) |
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync |
DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (méthode d’extension, timeout remplacée par CancellationToken) |
IDurableOrchestrationClient.CreateHttpManagementPayload |
DurableTaskClient.CreateHttpManagementPayload (méthode d’extension) |
DurableOrchestrationStatus |
OrchestrationMetadata |
DurableOrchestrationStatus.History |
Supprimé de l’objet status. Utilisez DurableTaskClient.GetOrchestrationHistoryAsync à la place. |
PurgeHistoryResult |
PurgeResult |
OrchestrationStatusQueryCondition |
OrchestrationQuery |
OrchestrationStatusQueryResult |
AsyncPageable<OrchestrationMetadata> |
API clientes supprimées
Les API in-process suivantes n’ont pas d’équivalents dans le Kit de développement logiciel (SDK) worker isolé :
| API supprimée | Contournement |
|---|---|
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync |
Pas d'équivalent |
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) |
Utiliser GetInstanceAsync dans une boucle ou GetAllInstancesAsync avec un filtre de requête |
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) |
Utiliser PurgeInstanceAsync dans une boucle ou PurgeAllInstancesAsync avec un filtre |
Surcharges inter-tâches hub (RaiseEventAsync, ReadEntityStateAsyncSignalEntityAsyncavecconnectionNametaskHubName/ ) |
Seules les opérations du même hub de tâches sont prises en charge |
API clientes d’entité
| En cours (2.x) | Travailleur isolé |
|---|---|
IDurableEntityClient.SignalEntityAsync |
DurableTaskClient.Entities.SignalEntityAsync |
IDurableEntityClient.ReadEntityStateAsync |
DurableTaskClient.Entities.GetEntityAsync |
IDurableEntityClient.ListEntitiesAsync |
DurableTaskClient.Entities.GetAllEntitiesAsync |
IDurableEntityClient.CleanEntityStorageAsync |
DurableTaskClient.Entities.CleanEntityStorageAsync (prend un objet CleanEntityStorageRequest au lieu de paramètres booléens) |
API de contexte d’orchestration
| En cours (2.x) | Travailleur isolé |
|---|---|
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 injectez une entrée en tant que paramètre : MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input) |
IDurableOrchestrationContext.SetOutput |
Enlevé. Utilisez la valeur de retour de la fonction orchestrator. |
IDurableOrchestrationContext.CallActivityAsync |
TaskOrchestrationContext.CallActivityAsync |
IDurableOrchestrationContext.CallActivityWithRetryAsync |
TaskOrchestrationContext.CallActivityAsync avec un TaskOptions paramètre pour les détails de nouvelle tentative |
IDurableOrchestrationContext.CallSubOrchestratorAsync |
TaskOrchestrationContext.CallSubOrchestratorAsync |
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync |
TaskOrchestrationContext.CallSubOrchestratorAsync avec un TaskOptions paramètre pour les détails de nouvelle tentative |
IDurableOrchestrationContext.ContinueAsNew |
TaskOrchestrationContext.ContinueAsNew (consultez les modifications comportementales pour connaître les différences par défaut) |
IDurableOrchestrationContext.CallHttpAsync |
TaskOrchestrationContext.CallHttpAsync |
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) |
TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken). Paramètre d’état supprimé. |
IDurableOrchestrationContext.WaitForExternalEvent(string) (non générique) |
Enlevé. Utilisez WaitForExternalEvent<T>(string, CancellationToken). |
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (avec defaultValue) |
Enlevé. Utilisez WaitForExternalEvent<T>(string, TimeSpan, CancellationToken), qui lance une exception TaskCanceledException en cas de délai d'expiration. |
IDurableOrchestrationContext.ParentInstanceId |
TaskOrchestrationContext.Parent.InstanceId |
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) |
TaskOrchestrationContext.CreateReplaySafeLogger<T>() ou TaskOrchestrationContext.CreateReplaySafeLogger(string) |
IDurableOrchestrationContext.CreateEntityProxy<T> |
Enlevé. Utilisez Entities.CallEntityAsync ou Entities.SignalEntityAsync directement. |
IDurableOrchestrationContext.CallEntityAsync |
TaskOrchestrationContext.Entities.CallEntityAsync |
IDurableOrchestrationContext.SignalEntity |
TaskOrchestrationContext.Entities.SignalEntityAsync |
IDurableOrchestrationContext.LockAsync |
TaskOrchestrationContext.Entities.LockEntitiesAsync |
IDurableOrchestrationContext.IsLocked |
TaskOrchestrationContext.Entities.InCriticalSection() |
RetryOptions |
TaskOptions avec TaskRetryOptions |
DurableActivityContext |
Pas d'équivalent |
DurableActivityContext.GetInput<T>() |
Injectez une entrée en tant que paramètre : MyActivity([ActivityTrigger] T input) |
DurableHttpRequest (Espace de noms WebJobs) |
DurableHttpRequest (espace de noms Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http) |
DurableHttpResponse (Espace de noms WebJobs) |
DurableHttpResponse (espace de noms Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http) |
API d’entité
| En cours (2.x) | Travailleur isolé |
|---|---|
IDurableEntityContext |
TaskEntityContext |
IDurableEntityContext.EntityName |
TaskEntityContext.Id.Name |
IDurableEntityContext.EntityKey |
TaskEntityContext.Id.Key |
IDurableEntityContext.OperationName |
TaskEntityOperation.Name |
IDurableEntityContext.FunctionBindingContext |
Enlevé. Ajouter FunctionContext en tant que paramètre d’entrée. |
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 |
Enlevé. Utilisez la valeur de retour de méthode à la place. |
IDurableEntityContext.SignalEntity |
TaskEntityContext.SignalEntity. Les signaux planifiés utilisent SignalEntityOptions.SignalTime plutôt qu’une DateTime surcharge de paramètre. |
IDurableEntityContext.StartNewOrchestration |
TaskEntityContext.ScheduleNewOrchestration. L’ID d’instance est défini au StartOrchestrationOptions.InstanceId lieu d’un paramètre de chaîne. |
IDurableEntityContext.DispatchAsync |
TaskEntityDispatcher.DispatchAsync. Paramètres de constructeur supprimés ; utilisez plutôt le DI standard. |
IDurableEntityContext.BatchSize |
Removed |
IDurableEntityContext.BatchPosition |
Removed |
Changements comportementaux
Passez en revue ces changements de comportement cassants avant de tester votre application migrée.
La sérialisation par défaut a changé
Le sérialiseur par défaut est passé de Newtonsoft.Json à System.Text.Json. Pour connaître les options de configuration, consultez Sérialisation et persistance dans Durable Functions.
Warning
Modification par défaut de ContinueAsNew : le preserveUnprocessedEvents paramètre par défaut est passé de false (2.x) à true (isolé). Si votre orchestration utilise ContinueAsNew et s’appuie sur le fait que les événements non traités soient ignorés, transmettez preserveUnprocessedEvents: false explicitement.
Remarque
Changement par défaut de RestartAsync : le restartWithNewInstanceId paramètre par défaut est passé de true (2.x) à false (isolé). Si votre code appelle RestartAsync et dépend d’un nouvel ID d’instance généré, passez restartWithNewInstanceId: trueexplicitement .
Autres changements comportementaux
-
Suppression du proxy d’entité :
CreateEntityProxy<T>et les surcharges de délégué typéesSignalEntityAsync<TEntityInterface>(Action<T>)ne sont pas disponibles dans le worker isolé. AppelezEntities.CallEntityAsyncouEntities.SignalEntityAsyncdirectement avec des noms d’opérations basées sur des chaînes au lieu d’utiliser des interfaces proxy typées. -
WaitForCompletionOrCreateCheckStatusResponseAsync : le
timeoutparamètre a été supprimé. Utilisez plutôt unCancellationTokenavec un temps d'attente pour l'annulation. -
Opérations inter-tâches-hub supprimées : les surcharges in-process qui ont accepté
taskHubNameetconnectionNameles paramètres ne sont pas disponibles dans un worker isolé. Seules les opérations sur des hubs de tâches identiques sont prises en charge. -
Opérations par lot supprimées par ID : les surcharges et
PurgeInstanceHistoryAsync(IEnumerable<string>)processusGetStatusAsync(IEnumerable<string>)ne sont pas disponibles. UtiliserGetAllInstancesAsyncavec unOrchestrationQueryfiltre ou un appelGetInstanceAsync/PurgeInstanceAsyncindividuellement. -
Historique d’orchestration déplacé :
DurableOrchestrationStatus.History(l'élément incorporéJArray) ne fait plus partie de l’objet d’état. Utilisez l’API distincteDurableTaskClient.GetOrchestrationHistoryAsync. -
Analyseurs de constructeur Entity DispatchAsync supprimés : les classes d’entité sont activées via l’injection de dépendances standard. Inscrivez les dépendances de votre entité dans
Program.cs. -
Modifications du filtre de requête d’entité :
EntityQuery.EntityNameest remplacé parEntityQuery.InstanceIdStartsWith, etEntityQuery.IncludeDeletedest remplacé parEntityQuery.IncludeTransient. -
Modification de signature CleanEntityStorageAsync : prend un
CleanEntityStorageRequestobjet avecRemoveEmptyEntitiesetReleaseOrphanedLocksdes propriétés au lieu de paramètres bool. -
Nouvelles API dans un worker isolé :
DurableTaskClient.GetOrchestrationHistoryAsyncet laTaskOrchestrationContext.GetFunctionContext()méthode d’extension n’a pas d’équivalent in-process.