Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 typiertenSignalEntityAsync<TEntityInterface>(Action<T>)Delegatüberladungen sind im isolierten Worker nicht verfügbar. Rufen SieEntities.CallEntityAsyncoderEntities.SignalEntityAsyncdirekt mit Zeichenfolgenbasierten Vorgangsnamen auf, anstatt eingegebene Proxyschnittstellen zu verwenden. -
WaitForCompletionOrCreateCheckStatusResponseAsync: Der
timeoutParameter wurde entfernt. Verwenden Sie stattdessen ein Abbruch-Timeout mitCancellationToken. -
Aufgabenübergreifende Vorgänge wurden entfernt: Die In-Process-Überladungen, die akzeptiert
taskHubNamewurden, undconnectionNameParameter 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>)- undPurgeInstanceHistoryAsync(IEnumerable<string>)Überladungen sind nicht verfügbar. Verwenden SieGetAllInstancesAsyncmit einemOrchestrationQuery-Filter oder rufen SieGetInstanceAsync/PurgeInstanceAsynceinzeln auf.PurgeInstanceAsync -
Der Orchestrierungsverlauf wurde verschoben:
DurableOrchestrationStatus.History(eingebettetJArray) ist nicht mehr Teil des Statusobjekts. Verwenden Sie die separateDurableTaskClient.GetOrchestrationHistoryAsyncAPI. -
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.EntityNameersetzt undEntityQuery.InstanceIdStartsWithwird durchEntityQuery.IncludeDeletedersetzt. -
CleanEntityStorageAsync-Signaturänderung: Verwendet ein
CleanEntityStorageRequestObjekt mitRemoveEmptyEntitiesundReleaseOrphanedLocksEigenschaften anstelle von Bool-Parametern. -
Neue APIs in isoliertem Worker:
DurableTaskClient.GetOrchestrationHistoryAsyncUnd dieTaskOrchestrationContext.GetFunctionContext()Erweiterungsmethode hat keine In-Process-Entsprechung.