Durable Functions: in-process naar geïsoleerde werkrol-API-toewijzing

Deze verwijzing biedt een uitgebreide toewijzing tussen de in-process SDK (2.x) en de geïsoleerde worker SDK voor Durable Functions. Gebruik deze pagina naast de migratiehandleiding bij het bijwerken van uw code.

Client-APIs

In-proces (2.x) Geïsoleerde werkrol
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 of PurgeAllInstancesAsync
IDurableOrchestrationClient.CreateCheckStatusResponse DurableTaskClient.CreateCheckStatusResponseAsync (extensiemethode, neemt HttpRequestData)
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (extensiemethode, timeout vervangen door CancellationToken)
IDurableOrchestrationClient.CreateHttpManagementPayload DurableTaskClient.CreateHttpManagementPayload (extensiemethode)
DurableOrchestrationStatus OrchestrationMetadata
DurableOrchestrationStatus.History Verwijderd uit statusobject. Gebruik in plaats daarvan DurableTaskClient.GetOrchestrationHistoryAsync.
PurgeHistoryResult PurgeResult
OrchestrationStatusQueryCondition OrchestrationQuery
OrchestrationStatusQueryResult AsyncPageable<OrchestrationMetadata>

Client-API's verwijderd

De volgende in-process API's hebben geen equivalenten in de geïsoleerde worker SDK:

Verwijderde API Workaround
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync Geen equivalent
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) Gebruiken GetInstanceAsync in een lus of GetAllInstancesAsync met een queryfilter
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) Gebruiken PurgeInstanceAsync in een lus of PurgeAllInstancesAsync met een filter
Overbelasting van meerdere takenhubs (RaiseEventAsync, SignalEntityAsyncReadEntityStateAsync metconnectionNametaskHubName/ ) Alleen bewerkingen met dezelfde taakhub worden ondersteund

Api's voor entiteitsclient

In-proces (2.x) Geïsoleerde werkrol
IDurableEntityClient.SignalEntityAsync DurableTaskClient.Entities.SignalEntityAsync
IDurableEntityClient.ReadEntityStateAsync DurableTaskClient.Entities.GetEntityAsync
IDurableEntityClient.ListEntitiesAsync DurableTaskClient.Entities.GetAllEntitiesAsync
IDurableEntityClient.CleanEntityStorageAsync DurableTaskClient.Entities.CleanEntityStorageAsync (gebruikt CleanEntityStorageRequest object in plaats van boolparameters)

Orkestratiecontext-API's

In-proces (2.x) Geïsoleerde werkrol
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>() of voeg invoer toe als parameter: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input)
IDurableOrchestrationContext.SetOutput Verwijderd. Gebruik de retourwaarde van de orchestratorfunctie.
IDurableOrchestrationContext.CallActivityAsync TaskOrchestrationContext.CallActivityAsync
IDurableOrchestrationContext.CallActivityWithRetryAsync TaskOrchestrationContext.CallActivityAsync met een TaskOptions parameter voor details van opnieuw proberen
IDurableOrchestrationContext.CallSubOrchestratorAsync TaskOrchestrationContext.CallSubOrchestratorAsync
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync TaskOrchestrationContext.CallSubOrchestratorAsync met een TaskOptions parameter voor details van opnieuw proberen
IDurableOrchestrationContext.ContinueAsNew TaskOrchestrationContext.ContinueAsNew (zie gedragswijzigingen voor standaardverschillen )
IDurableOrchestrationContext.CallHttpAsync TaskOrchestrationContext.CallHttpAsync
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken). Statusparameter verwijderd.
IDurableOrchestrationContext.WaitForExternalEvent(string) (niet-algemeen) Verwijderd. Gebruik WaitForExternalEvent<T>(string, CancellationToken).
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (met defaultValue) Verwijderd. Gebruik WaitForExternalEvent<T>(string, TimeSpan, CancellationToken), dat TaskCanceledException bij time-out opwerpt.
IDurableOrchestrationContext.ParentInstanceId TaskOrchestrationContext.Parent.InstanceId
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) TaskOrchestrationContext.CreateReplaySafeLogger<T>() of TaskOrchestrationContext.CreateReplaySafeLogger(string)
IDurableOrchestrationContext.CreateEntityProxy<T> Verwijderd. Gebruik Entities.CallEntityAsync of Entities.SignalEntityAsync rechtstreeks.
IDurableOrchestrationContext.CallEntityAsync TaskOrchestrationContext.Entities.CallEntityAsync
IDurableOrchestrationContext.SignalEntity TaskOrchestrationContext.Entities.SignalEntityAsync
IDurableOrchestrationContext.LockAsync TaskOrchestrationContext.Entities.LockEntitiesAsync
IDurableOrchestrationContext.IsLocked TaskOrchestrationContext.Entities.InCriticalSection()
RetryOptions TaskOptions met TaskRetryOptions
DurableActivityContext Geen equivalent
DurableActivityContext.GetInput<T>() Invoer als parameter injecteren: MyActivity([ActivityTrigger] T input)
DurableHttpRequest (WebJobs-naamruimte) DurableHttpRequest (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http naamruimte)
DurableHttpResponse (WebJobs-naamruimte) DurableHttpResponse (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http naamruimte)

Entiteits-API's

In-proces (2.x) Geïsoleerde werkrol
IDurableEntityContext TaskEntityContext
IDurableEntityContext.EntityName TaskEntityContext.Id.Name
IDurableEntityContext.EntityKey TaskEntityContext.Id.Key
IDurableEntityContext.OperationName TaskEntityOperation.Name
IDurableEntityContext.FunctionBindingContext Verwijderd. Toevoegen FunctionContext als invoerparameter.
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 Verwijderd. Gebruik in plaats daarvan de retourwaarde van de methode.
IDurableEntityContext.SignalEntity TaskEntityContext.SignalEntity. Geplande signalen gebruiken SignalEntityOptions.SignalTime in plaats van een DateTime parameteroverbelasting.
IDurableEntityContext.StartNewOrchestration TaskEntityContext.ScheduleNewOrchestration. Exemplaar-id wordt ingesteld via StartOrchestrationOptions.InstanceId in plaats van een tekenreeksparameter.
IDurableEntityContext.DispatchAsync TaskEntityDispatcher.DispatchAsync. Constructorparams verwijderd; gebruik in plaats daarvan standaard-DI.
IDurableEntityContext.BatchSize Removed
IDurableEntityContext.BatchPosition Removed

Gedragswijzigingen

Bekijk deze belangrijke gedragswijzigingen voordat u uw gemigreerde app test.

Standaard serialisatie gewijzigd

De standaardserialisatie is gewijzigd van Newtonsoft.Json .System.Text.Json Zie Serialisatie en persistentie in Durable Functions voor configuratieopties.

Waarschuwing

ContinueAsNew-standaardwijziging: de standaardwaarde van de preserveUnprocessedEvents parameter is gewijzigd van false (2.x) in true (geïsoleerd). Als uw orkestratie gebruikmaakt van ContinueAsNew en afhankelijk is van niet-verwerkte gebeurtenissen die worden verwijderd, moet u expliciet preserveUnprocessedEvents: false doorgeven.

Note

Standaardwijziging restartAsync: de standaardwaarde van de restartWithNewInstanceId parameter is gewijzigd van true (2.x) in false (geïsoleerd). Als uw code aanroept RestartAsync en afhankelijk is van een nieuwe exemplaar-id die wordt gegenereerd, geeft u expliciet door restartWithNewInstanceId: true.

Andere gedragswijzigingen

  • Entiteitsproxyverwijdering: CreateEntityProxy<T> en de getypte SignalEntityAsync<TEntityInterface>(Action<T>) afgevaardigde overbelastingen zijn niet beschikbaar in de geïsoleerde werker. Roep Entities.CallEntityAsync of Entities.SignalEntityAsync rechtstreeks met bewerkingsnamen op basis van tekenreeksen in plaats van getypte proxyinterfaces te gebruiken.
  • WaitForCompletionOrCreateCheckStatusResponseAsync: De timeout parameter is verwijderd. Gebruik in plaats daarvan een CancellationToken time-out voor annulering.
  • Cross-task-hub-bewerkingen verwijderd: de in-process overbelastingen die zijn geaccepteerd taskHubName en connectionName parameters zijn niet beschikbaar in geïsoleerde werkrol. Alleen bewerkingen met dezelfde taakhub worden ondersteund.
  • Batchbewerkingen op id verwijderd: de in-process GetStatusAsync(IEnumerable<string>) en PurgeInstanceHistoryAsync(IEnumerable<string>) overbelastingen zijn niet beschikbaar. Gebruik GetAllInstancesAsync met een OrchestrationQuery filter of bel GetInstanceAsync/PurgeInstanceAsync afzonderlijk.
  • Orkestratiegeschiedenis is verplaatst: DurableOrchestrationStatus.History (het ingesloten JArray) maakt niet langer deel uit van het statusobject. Gebruik de afzonderlijke DurableTaskClient.GetOrchestrationHistoryAsync API.
  • Entiteit DispatchAsync constructorparameters verwijderd: Entiteitsklassen worden geactiveerd via standaardinjectie van afhankelijkheden. Registreer de afhankelijkheden van uw entiteit in Program.cs.
  • Wijzigingen in entiteitsqueryfilters: EntityQuery.EntityName wordt vervangen door EntityQuery.InstanceIdStartsWithen EntityQuery.IncludeDeleted wordt vervangen door EntityQuery.IncludeTransient.
  • CleanEntityStorageAsync-handtekeningwijziging: neemt een CleanEntityStorageRequest object met RemoveEmptyEntities en ReleaseOrphanedLocks eigenschappen in plaats van boolparameters.
  • Nieuwe API's in geïsoleerde werkrol: DurableTaskClient.GetOrchestrationHistoryAsync en de TaskOrchestrationContext.GetFunctionContext() extensiemethode heeft geen in-process equivalent.