Durable Functions: pågående till isolerad API-mappning för arbetare

Den här referensen innehåller en omfattande mappning mellan den processbaserade SDK:t (2.x) och den isolerade arbets-SDK:t för Durable Functions. Använd den här sidan tillsammans med migreringsguiden när du uppdaterar koden.

Klient-API:er

Pågående (2.x) Isolerad arbetare
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 eller PurgeAllInstancesAsync
IDurableOrchestrationClient.CreateCheckStatusResponse DurableTaskClient.CreateCheckStatusResponseAsync (tilläggsmetod, tar HttpRequestData)
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (tilläggsmetod, timeout ersatt av CancellationToken)
IDurableOrchestrationClient.CreateHttpManagementPayload DurableTaskClient.CreateHttpManagementPayload (tilläggsmetod)
DurableOrchestrationStatus OrchestrationMetadata
DurableOrchestrationStatus.History Har tagits bort från statusobjektet. Använd DurableTaskClient.GetOrchestrationHistoryAsync i stället.
PurgeHistoryResult PurgeResult
OrchestrationStatusQueryCondition OrchestrationQuery
OrchestrationStatusQueryResult AsyncPageable<OrchestrationMetadata>

Klient-API:er har tagits bort

Följande process-API:er har inte motsvarigheter i den isolerade arbets-SDK:t:

API:et har tagits bort Workaround
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync Ingen motsvarighet
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) Använda GetInstanceAsync i en loop eller GetAllInstancesAsync med ett frågefilter
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) Använda PurgeInstanceAsync i en loop eller PurgeAllInstancesAsync med ett filter
Överlagringar mellan uppgiftshubbar (RaiseEventAsync, SignalEntityAsync, ReadEntityStateAsync med/taskHubNameconnectionName ) Endast åtgärder med samma uppgiftshubb stöds

Api:er för entitetsklient

Pågående (2.x) Isolerad arbetare
IDurableEntityClient.SignalEntityAsync DurableTaskClient.Entities.SignalEntityAsync
IDurableEntityClient.ReadEntityStateAsync DurableTaskClient.Entities.GetEntityAsync
IDurableEntityClient.ListEntitiesAsync DurableTaskClient.Entities.GetAllEntitiesAsync
IDurableEntityClient.CleanEntityStorageAsync DurableTaskClient.Entities.CleanEntityStorageAsync (tar CleanEntityStorageRequest objekt i stället för boolparametrar)

API:er för orkestreringskontext

Pågående (2.x) Isolerad arbetare
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>() eller ange indata som en parameter: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input)
IDurableOrchestrationContext.SetOutput Avlägsnad. Använd returvärdet från orchestrator-funktionen.
IDurableOrchestrationContext.CallActivityAsync TaskOrchestrationContext.CallActivityAsync
IDurableOrchestrationContext.CallActivityWithRetryAsync TaskOrchestrationContext.CallActivityAsync med en TaskOptions parameter för återförsöksinformation
IDurableOrchestrationContext.CallSubOrchestratorAsync TaskOrchestrationContext.CallSubOrchestratorAsync
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync TaskOrchestrationContext.CallSubOrchestratorAsync med en TaskOptions parameter för återförsöksinformation
IDurableOrchestrationContext.ContinueAsNew TaskOrchestrationContext.ContinueAsNew (se beteendeändringar för standardskillnader)
IDurableOrchestrationContext.CallHttpAsync TaskOrchestrationContext.CallHttpAsync
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken). Tillståndsparametern har tagits bort.
IDurableOrchestrationContext.WaitForExternalEvent(string) (icke-generisk) Avlägsnad. Använd WaitForExternalEvent<T>(string, CancellationToken).
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (med defaultValue) Avlägsnad. Använd WaitForExternalEvent<T>(string, TimeSpan, CancellationToken), som utlöser TaskCanceledException vid timeout.
IDurableOrchestrationContext.ParentInstanceId TaskOrchestrationContext.Parent.InstanceId
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) TaskOrchestrationContext.CreateReplaySafeLogger<T>() eller TaskOrchestrationContext.CreateReplaySafeLogger(string)
IDurableOrchestrationContext.CreateEntityProxy<T> Avlägsnad. Använd Entities.CallEntityAsync eller Entities.SignalEntityAsync direkt.
IDurableOrchestrationContext.CallEntityAsync TaskOrchestrationContext.Entities.CallEntityAsync
IDurableOrchestrationContext.SignalEntity TaskOrchestrationContext.Entities.SignalEntityAsync
IDurableOrchestrationContext.LockAsync TaskOrchestrationContext.Entities.LockEntitiesAsync
IDurableOrchestrationContext.IsLocked TaskOrchestrationContext.Entities.InCriticalSection()
RetryOptions TaskOptions med TaskRetryOptions
DurableActivityContext Ingen motsvarighet
DurableActivityContext.GetInput<T>() Mata in indata som en parameter: MyActivity([ActivityTrigger] T input)
DurableHttpRequest (WebJobs-namnområde) DurableHttpRequest (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http namnområde)
DurableHttpResponse (WebJobs-namnområde) DurableHttpResponse (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http namnområde)

Entitets-API:er

Pågående (2.x) Isolerad arbetare
IDurableEntityContext TaskEntityContext
IDurableEntityContext.EntityName TaskEntityContext.Id.Name
IDurableEntityContext.EntityKey TaskEntityContext.Id.Key
IDurableEntityContext.OperationName TaskEntityOperation.Name
IDurableEntityContext.FunctionBindingContext Avlägsnad. Lägg till FunctionContext som indataparameter.
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 Avlägsnad. Använd metodens returvärde i stället.
IDurableEntityContext.SignalEntity TaskEntityContext.SignalEntity. Schemalagda signaler använder SignalEntityOptions.SignalTime i stället för en DateTime parameteröverlagring.
IDurableEntityContext.StartNewOrchestration TaskEntityContext.ScheduleNewOrchestration. Instans-ID anges via StartOrchestrationOptions.InstanceId i stället för en strängparameter.
IDurableEntityContext.DispatchAsync TaskEntityDispatcher.DispatchAsync. Konstruktorparamer har tagits bort. använd standard-DI i stället.
IDurableEntityContext.BatchSize Removed
IDurableEntityContext.BatchPosition Removed

Förändringar i beteende

Granska dessa icke-bakåtkompatibla beteendeändringar innan du testar din migrerade app.

Standardvärdet för serialisering har ändrats

Standard serialiseraren har ändrats från Newtonsoft.Json till System.Text.Json. Konfigurationsalternativ finns i Serialisering och beständighet i Durable Functions.

Varning

ContinueAsNy standardändring: Standardinställningen för parametern preserveUnprocessedEvents har ändrats från false (2.x) till true (isolerad). Om din orkestrering använder ContinueAsNew och förlitar sig på att obearbetade händelser kastas bort, skicka preserveUnprocessedEvents: false uttryckligen.

Note

RestartAsync standardändring: Standardinställningen för parametern restartWithNewInstanceId har ändrats från true (2.x) till false (isolerad). Om koden anropar RestartAsync och är beroende av att ett nytt instans-ID genereras, skickar du uttryckligen restartWithNewInstanceId: true.

Andra beteendeförändringar

  • Borttagning av entitetsproxy: CreateEntityProxy<T> och de inskrivna delegerade SignalEntityAsync<TEntityInterface>(Action<T>) överlagringarna är inte tillgängliga i den isolerade arbetaren. Anropa Entities.CallEntityAsync eller Entities.SignalEntityAsync direkt med strängbaserade åtgärdsnamn i stället för att använda inskrivna proxygränssnitt.
  • WaitForCompletionOrCreateCheckStatusResponseAsync: Parametern timeout har tagits bort. Använd en CancellationToken med en tidsgräns för annullering i stället.
  • Åtgärder mellan uppgiftshubbar har tagits bort: De processöverlagringar som accepterades taskHubName och connectionName parametrarna är inte tillgängliga i isolerad arbetare. Endast operationer med samma task-hubb stöds.
  • Batchåtgärder efter ID har tagits bort: Process- GetStatusAsync(IEnumerable<string>) och PurgeInstanceHistoryAsync(IEnumerable<string>) överlagringarna är inte tillgängliga. Använd GetAllInstancesAsync med ett OrchestrationQuery filter eller anropa GetInstanceAsync/PurgeInstanceAsync individuellt.
  • Orkestreringshistoriken har flyttats: DurableOrchestrationStatus.History (den inbäddade JArray) är inte längre en del av statusobjektet. Använd det separata DurableTaskClient.GetOrchestrationHistoryAsync API:et.
  • Entity DispatchAsync-konstruktorparametrarna har tagits bort: Entitetsklasser aktiveras via standardberoendeinmatning. Registrera entitetens beroenden i Program.cs.
  • Ändringar i entitetens frågefilter: EntityQuery.EntityName ersätts av EntityQuery.InstanceIdStartsWithoch EntityQuery.IncludeDeleted ersätts av EntityQuery.IncludeTransient.
  • CleanEntityStorageAsync-signaturändring: Tar ett CleanEntityStorageRequest objekt med RemoveEmptyEntities och ReleaseOrphanedLocks egenskaper i stället för boolparametrar.
  • Nya API:er i isolerad arbetare: DurableTaskClient.GetOrchestrationHistoryAsync och TaskOrchestrationContext.GetFunctionContext() tilläggsmetoden har ingen motsvarighet i processen.