Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento odkaz poskytuje komplexní mapování mezi sadou SDK v procesu (2.x) a izolovanou sadou SDK pracovního procesu pro Durable Functions. Tuto stránku použijte společně s průvodcem migrací při aktualizaci kódu.
Klientská rozhraní API
| V procesu (2.x) | Izolovaný pracovník |
|---|---|
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 nebo PurgeAllInstancesAsync |
IDurableOrchestrationClient.CreateCheckStatusResponse |
DurableTaskClient.CreateCheckStatusResponseAsync (rozšiřující metoda, přebírá HttpRequestData) |
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync |
DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (rozšiřující metoda, timeout nahrazena CancellationToken) |
IDurableOrchestrationClient.CreateHttpManagementPayload |
DurableTaskClient.CreateHttpManagementPayload (rozšiřující metoda) |
DurableOrchestrationStatus |
OrchestrationMetadata |
DurableOrchestrationStatus.History |
Odebráno z objektu stavu. Místo toho použijte DurableTaskClient.GetOrchestrationHistoryAsync. |
PurgeHistoryResult |
PurgeResult |
OrchestrationStatusQueryCondition |
OrchestrationQuery |
OrchestrationStatusQueryResult |
AsyncPageable<OrchestrationMetadata> |
Odebraná klientská rozhraní API
Následující rozhraní API v procesu nemají v izolované sadě SDK pracovního procesu ekvivalenty:
| Odebrané rozhraní API | Workaround |
|---|---|
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync |
Žádný ekvivalent |
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) |
Použití GetInstanceAsync ve smyčce nebo GetAllInstancesAsync s filtrem dotazu |
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) |
Použití PurgeInstanceAsync ve smyčce nebo PurgeAllInstancesAsync s filtrem |
Přetížení mezi úlohami rozbočovače (RaiseEventAsync, SignalEntityAsync, ReadEntityStateAsync staskHubName/connectionName ) |
Podporují se pouze operace stejného centra úloh. |
Rozhraní API klienta entity
| V procesu (2.x) | Izolovaný pracovník |
|---|---|
IDurableEntityClient.SignalEntityAsync |
DurableTaskClient.Entities.SignalEntityAsync |
IDurableEntityClient.ReadEntityStateAsync |
DurableTaskClient.Entities.GetEntityAsync |
IDurableEntityClient.ListEntitiesAsync |
DurableTaskClient.Entities.GetAllEntitiesAsync |
IDurableEntityClient.CleanEntityStorageAsync |
DurableTaskClient.Entities.CleanEntityStorageAsync (přebírá CleanEntityStorageRequest objekt místo logických parametrů) |
Rozhraní API pro orchestraci kontextu
| V procesu (2.x) | Izolovaný pracovník |
|---|---|
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>() nebo vložte vstup jako parametr: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input) |
IDurableOrchestrationContext.SetOutput |
Odstraněn. Použijte návratové hodnoty z funkce orchestrátoru. |
IDurableOrchestrationContext.CallActivityAsync |
TaskOrchestrationContext.CallActivityAsync |
IDurableOrchestrationContext.CallActivityWithRetryAsync |
TaskOrchestrationContext.CallActivityAsync s parametrem TaskOptions pro podrobnosti opakování |
IDurableOrchestrationContext.CallSubOrchestratorAsync |
TaskOrchestrationContext.CallSubOrchestratorAsync |
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync |
TaskOrchestrationContext.CallSubOrchestratorAsync s parametrem TaskOptions pro podrobnosti opakování |
IDurableOrchestrationContext.ContinueAsNew |
TaskOrchestrationContext.ContinueAsNew (viz změny chování pro výchozí rozdíly) |
IDurableOrchestrationContext.CallHttpAsync |
TaskOrchestrationContext.CallHttpAsync |
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) |
TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken). Byl odebrán parametr stavu. |
IDurableOrchestrationContext.WaitForExternalEvent(string) (jiné než obecné) |
Odstraněn. Použijte WaitForExternalEvent<T>(string, CancellationToken). |
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (s defaultValue) |
Odstraněn. Použijte WaitForExternalEvent<T>(string, TimeSpan, CancellationToken), který vyvolá TaskCanceledException, pokud dojde k vypršení časového limitu. |
IDurableOrchestrationContext.ParentInstanceId |
TaskOrchestrationContext.Parent.InstanceId |
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) |
TaskOrchestrationContext.CreateReplaySafeLogger<T>() nebo TaskOrchestrationContext.CreateReplaySafeLogger(string) |
IDurableOrchestrationContext.CreateEntityProxy<T> |
Odstraněn. Použijte Entities.CallEntityAsync nebo Entities.SignalEntityAsync přímo. |
IDurableOrchestrationContext.CallEntityAsync |
TaskOrchestrationContext.Entities.CallEntityAsync |
IDurableOrchestrationContext.SignalEntity |
TaskOrchestrationContext.Entities.SignalEntityAsync |
IDurableOrchestrationContext.LockAsync |
TaskOrchestrationContext.Entities.LockEntitiesAsync |
IDurableOrchestrationContext.IsLocked |
TaskOrchestrationContext.Entities.InCriticalSection() |
RetryOptions |
TaskOptions s TaskRetryOptions |
DurableActivityContext |
Žádný ekvivalent |
DurableActivityContext.GetInput<T>() |
Vložte vstup jako parametr: MyActivity([ActivityTrigger] T input) |
DurableHttpRequest (Obor názvů WebJobs) |
DurableHttpRequest (jmenný prostor Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http) |
DurableHttpResponse (Obor názvů WebJobs) |
DurableHttpResponse (jmenný prostor Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http) |
Rozhraní API entity
| V procesu (2.x) | Izolovaný pracovník |
|---|---|
IDurableEntityContext |
TaskEntityContext |
IDurableEntityContext.EntityName |
TaskEntityContext.Id.Name |
IDurableEntityContext.EntityKey |
TaskEntityContext.Id.Key |
IDurableEntityContext.OperationName |
TaskEntityOperation.Name |
IDurableEntityContext.FunctionBindingContext |
Odstraněn. Přidejte FunctionContext jako vstupní parametr. |
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 |
Odstraněn. Místo toho použijte návratové hodnoty metody. |
IDurableEntityContext.SignalEntity |
TaskEntityContext.SignalEntity. Plánované signály používají SignalEntityOptions.SignalTime namísto přetížení parametru DateTime. |
IDurableEntityContext.StartNewOrchestration |
TaskEntityContext.ScheduleNewOrchestration. Instance ID se nastavuje pomocí StartOrchestrationOptions.InstanceId namísto řetězcového parametru. |
IDurableEntityContext.DispatchAsync |
TaskEntityDispatcher.DispatchAsync. Konstruktorové parametry byly odstraněny; místo toho použijte standardní DI (dependency injection). |
IDurableEntityContext.BatchSize |
Removed |
IDurableEntityContext.BatchPosition |
Removed |
Změny chování
Před otestování migrované aplikace si projděte tyto změny způsobující chování.
Změna výchozího nastavení serializace
Výchozí serializátor se změnil z Newtonsoft.Json na System.Text.Json. Možnosti konfigurace najdete v tématu Serializace a trvalost v Durable Functions.
Warning
ContinueAsNew default change: Výchozí hodnota parametru preserveUnprocessedEvents byla změněna z false (2.x) na true (isolated). Pokud orchestrace používá ContinueAsNew a spoléhá na to, že nezpracované události mají být zahozeny, explicitně předejte preserveUnprocessedEvents: false.
Note
Výchozí změna restartAsync: Výchozí restartWithNewInstanceId parametr se změnil z true (2.x) na false (izolovaný). Pokud váš kód volá RestartAsync a závisí na vygenerovaném novém ID instance, explicitně předejte restartWithNewInstanceId: true.
Jiné změny chování
-
Odebrání proxy serveru entity:
CreateEntityProxy<T>a přetížení typuSignalEntityAsync<TEntityInterface>(Action<T>)delegáta nejsou k dispozici v izolovaném pracovním procesu. Místo použití zadaných proxy rozhraní volejteEntities.CallEntityAsyncneboEntities.SignalEntityAsyncpřímo s názvy operací založenými na řetězcích. -
WaitForCompletionOrCreateCheckStatusResponseAsync: Parametr
timeoutbyl odebrán. PoužijteCancellationTokens časovým limitem zrušení. -
Operace mezi úlohami rozbočovače byly odebrány: Přetížení v procesu, která přijali
taskHubNameaconnectionNameparametry nejsou k dispozici v izolovaném pracovním procesu. Podporují se pouze operace stejného centra úloh. -
Odebrané dávkové operace podle ID: Proces
GetStatusAsync(IEnumerable<string>)aPurgeInstanceHistoryAsync(IEnumerable<string>)přetížení nejsou k dispozici. PoužijteGetAllInstancesAsyncs filtremOrchestrationQuerynebo volejteGetInstanceAsync/PurgeInstanceAsyncjednotlivě. -
Přesunutá historie orchestrace:
DurableOrchestrationStatus.History(vloženýJArray) už není součástí objektu stavu. Použijte samostatnéDurableTaskClient.GetOrchestrationHistoryAsyncrozhraní API. -
Odebrané parametry konstruktoru Entity DispatchAsync: Třídy entit jsou aktivovány prostřednictvím standardní injektáže závislostí. Zaregistrujte závislosti entity v souboru
Program.cs. -
Změny filtru dotazu entity:
EntityQuery.EntityNameje nahrazena znakemEntityQuery.InstanceIdStartsWith, aEntityQuery.IncludeDeletedje nahrazenaEntityQuery.IncludeTransient. -
Změna podpisu CleanEntityStorageAsync: Přebírá
CleanEntityStorageRequestobjekt sRemoveEmptyEntitiesparametry bool aReleaseOrphanedLocksvlastnosti místo logických parametrů. -
Nová rozhraní API v izolovaném
DurableTaskClient.GetOrchestrationHistoryAsyncpracovním procesu:TaskOrchestrationContext.GetFunctionContext()a metoda rozšíření nemá žádný ekvivalent v procesu.
Související obsah
- průvodce Migration: Durable Functions z procesu do izolovaného pracovního procesu
- Serializace a trvalost v Durable Functions
- referenční informace k rozhraní API sady SDK pro proces (
Microsoft.Azure.WebJobs.Extensions.DurableTask) -
Referenční informace k rozhraní API sady SDK pro pracovní proces (
Microsoft.DurableTask)