Durable Functions: In-Process-API-Zuordnung zu isolierten Worker-APIs

Diese Referenz enthält eine umfassende Zuordnung zwischen dem In-Process-SDK (2.x) und dem isolierten Worker-SDK für Durable Functions. Verwenden Sie diese Seite zusammen mit dem Migrationsleitfaden beim Aktualisieren des Codes.

Client-APIs

Prozessintern (Version 2.x) Eingeschlossener Mitarbeiter
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 oder PurgeAllInstancesAsync
IDurableOrchestrationClient.CreateCheckStatusResponse DurableTaskClient.CreateCheckStatusResponseAsync (Erweiterungsmethode, nimmt HttpRequestData)
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (Erweiterungsmethode, timeout ersetzt durch CancellationToken)
IDurableOrchestrationClient.CreateHttpManagementPayload DurableTaskClient.CreateHttpManagementPayload (Erweiterungsmethode)
DurableOrchestrationStatus OrchestrationMetadata
DurableOrchestrationStatus.History Aus statusobjekt entfernt. Verwenden Sie stattdessen DurableTaskClient.GetOrchestrationHistoryAsync.
PurgeHistoryResult PurgeResult
OrchestrationStatusQueryCondition OrchestrationQuery
OrchestrationStatusQueryResult AsyncPageable<OrchestrationMetadata>

Entfernte Client-APIs

Die folgenden In-Process-APIs verfügen nicht über Entsprechungen im isolierten Worker-SDK:

Gelöschte API Workaround
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync Keine Entsprechung
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) Verwenden GetInstanceAsync in einer Schleife oder GetAllInstancesAsync mit einem Abfragefilter
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) Verwenden PurgeInstanceAsync in einer Schleife oder PurgeAllInstancesAsync mit einem Filter
Cross-Task-Hub-Überladungen (RaiseEventAsync, ReadEntityStateAsyncSignalEntityAsyncmitconnectionNametaskHubName/ ) Nur Vorgänge des gleichen Aufgabenhubs werden unterstützt.

Entitätsclient-APIs

Prozessintern (Version 2.x) Eingeschlossener Mitarbeiter
IDurableEntityClient.SignalEntityAsync DurableTaskClient.Entities.SignalEntityAsync
IDurableEntityClient.ReadEntityStateAsync DurableTaskClient.Entities.GetEntityAsync
IDurableEntityClient.ListEntitiesAsync DurableTaskClient.Entities.GetAllEntitiesAsync
IDurableEntityClient.CleanEntityStorageAsync DurableTaskClient.Entities.CleanEntityStorageAsync (verwendet CleanEntityStorageRequest Objekt anstelle von Bool-Parametern)

Orchestrierungskontext-APIs

Prozessintern (Version 2.x) Eingeschlossener Mitarbeiter
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>() oder Einfügen von Eingaben als Parameter: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input)
IDurableOrchestrationContext.SetOutput Entfernt. Verwenden Sie den Rückgabewert aus der Orchestratorfunktion.
IDurableOrchestrationContext.CallActivityAsync TaskOrchestrationContext.CallActivityAsync
IDurableOrchestrationContext.CallActivityWithRetryAsync TaskOrchestrationContext.CallActivityAsync mit einem TaskOptions Parameter für Wiederholungsdetails
IDurableOrchestrationContext.CallSubOrchestratorAsync TaskOrchestrationContext.CallSubOrchestratorAsync
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync TaskOrchestrationContext.CallSubOrchestratorAsync mit einem TaskOptions Parameter für Wiederholungsdetails
IDurableOrchestrationContext.ContinueAsNew TaskOrchestrationContext.ContinueAsNew (siehe Verhaltensänderungen für Standardunterschiede)
IDurableOrchestrationContext.CallHttpAsync TaskOrchestrationContext.CallHttpAsync
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken). Zustandsparameter entfernt.
IDurableOrchestrationContext.WaitForExternalEvent(string) (nicht generisch) Entfernt. Verwenden Sie WaitForExternalEvent<T>(string, CancellationToken).
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (mit defaultValue) Entfernt. Verwenden Sie WaitForExternalEvent<T>(string, TimeSpan, CancellationToken), die bei einem Timeout TaskCanceledException auslöst.
IDurableOrchestrationContext.ParentInstanceId TaskOrchestrationContext.Parent.InstanceId
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) TaskOrchestrationContext.CreateReplaySafeLogger<T>() oder TaskOrchestrationContext.CreateReplaySafeLogger(string)
IDurableOrchestrationContext.CreateEntityProxy<T> Entfernt. Verwenden Sie Entities.CallEntityAsync oder 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 mit TaskRetryOptions
DurableActivityContext Keine Entsprechung
DurableActivityContext.GetInput<T>() Einfügen von Eingaben als Parameter: MyActivity([ActivityTrigger] T input)
DurableHttpRequest (WebJobs-Namespace) DurableHttpRequest (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http-Namespace)
DurableHttpResponse (WebJobs-Namespace) DurableHttpResponse (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http-Namespace)

Entitäts-APIs

Prozessintern (Version 2.x) Eingeschlossener Mitarbeiter
IDurableEntityContext TaskEntityContext
IDurableEntityContext.EntityName TaskEntityContext.Id.Name
IDurableEntityContext.EntityKey TaskEntityContext.Id.Key
IDurableEntityContext.OperationName TaskEntityOperation.Name
IDurableEntityContext.FunctionBindingContext Entfernt. Als Eingabeparameter hinzufügen FunctionContext .
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 Entfernt. Verwenden Sie stattdessen den Rückgabewert der Methode.
IDurableEntityContext.SignalEntity TaskEntityContext.SignalEntity. Geplante Signale verwenden SignalEntityOptions.SignalTime anstelle einer Parameterüberladung DateTime.
IDurableEntityContext.StartNewOrchestration TaskEntityContext.ScheduleNewOrchestration. Die Instanz-ID wird über StartOrchestrationOptions.InstanceId und nicht über einen Zeichenfolgenparameter festgelegt.
IDurableEntityContext.DispatchAsync TaskEntityDispatcher.DispatchAsync. Konstruktorparameter entfernt; Verwenden Sie stattdessen Standard-DI.
IDurableEntityContext.BatchSize Entfernt
IDurableEntityContext.BatchPosition Entfernt

Änderungen des Verhaltens

Überprüfen Sie diese aktuellen Verhaltensänderungen, bevor Sie Ihre migrierte App testen.

Serialisierung standard geändert

Der Standard-Serialisierer wurde von Newtonsoft.Json zu System.Text.Json. Konfigurationsoptionen finden Sie unter Serialisierung und Persistenz in Durable Functions.

Warnung

ContinueAsNew Standardänderung: Der Standardwert des preserveUnprocessedEvents-Parameters wurde von false (2.x) auf true (isolated) geändert. Wenn Ihre Orchestrierung ContinueAsNew verwendet und sich darauf stützt, dass unverarbeitete Ereignisse verworfen werden, übergeben Sie preserveUnprocessedEvents: false explizit.

Note

RestartAsync-Standardänderung: Der restartWithNewInstanceId Parameterstandard wurde von true (2.x) in false (isoliert) geändert. Wenn Ihr Code RestartAsync aufruft und von einer neuen, generierten Instanz-ID abhängt, übergeben Sie restartWithNewInstanceId: true explizit.

Andere Verhaltensänderungen

  • Entfernung des Entitätsproxys: CreateEntityProxy<T> Und die typierten SignalEntityAsync<TEntityInterface>(Action<T>) Delegatüberladungen sind im isolierten Worker nicht verfügbar. Rufen Sie Entities.CallEntityAsync oder Entities.SignalEntityAsync direkt mit Zeichenfolgenbasierten Vorgangsnamen auf, anstatt eingegebene Proxyschnittstellen zu verwenden.
  • WaitForCompletionOrCreateCheckStatusResponseAsync: Der timeout Parameter wurde entfernt. Verwenden Sie stattdessen ein Abbruch-Timeout mit CancellationToken.
  • Aufgabenübergreifende Vorgänge wurden entfernt: Die In-Process-Überladungen, die akzeptiert taskHubName wurden, und connectionName Parameter sind in isolierten Workern nicht verfügbar. Es werden nur Vorgänge desselben Task-Hubs unterstützt.
  • Batchvorgänge nach ID entfernt: Die In-Process GetStatusAsync(IEnumerable<string>) - und PurgeInstanceHistoryAsync(IEnumerable<string>) Überladungen sind nicht verfügbar. Verwenden Sie GetAllInstancesAsync mit einem OrchestrationQuery-Filter oder rufen Sie GetInstanceAsync/PurgeInstanceAsync einzeln auf.PurgeInstanceAsync
  • Der Orchestrierungsverlauf wurde verschoben: DurableOrchestrationStatus.History (eingebettet JArray) ist nicht mehr Teil des Statusobjekts. Verwenden Sie die separate DurableTaskClient.GetOrchestrationHistoryAsync API.
  • Entity DispatchAsync-Konstruktorparameter entfernt: Entitätsklassen werden über die Standardmäßige Abhängigkeitsinjektion aktiviert. Registrieren Sie die Abhängigkeiten Ihrer Entität in Program.cs.
  • Änderungen des Entitätsabfragefilters: wird durch EntityQuery.EntityName ersetzt und EntityQuery.InstanceIdStartsWith wird durch EntityQuery.IncludeDeleted ersetzt.
  • CleanEntityStorageAsync-Signaturänderung: Verwendet ein CleanEntityStorageRequest Objekt mit RemoveEmptyEntities und ReleaseOrphanedLocks Eigenschaften anstelle von Bool-Parametern.
  • Neue APIs in isoliertem Worker: DurableTaskClient.GetOrchestrationHistoryAsync Und die TaskOrchestrationContext.GetFunctionContext() Erweiterungsmethode hat keine In-Process-Entsprechung.