Durable Functions: folyamatban az izolált feldolgozói API-leképezés

Ez a hivatkozás átfogó leképezést biztosít a folyamatban lévő (2.x) SDK és a Durable Functions elkülönített feldolgozó SDK között. A kód frissítésekor használja ezt a lapot a migrálási útmutató mellett.

Ügyfél API-k

Folyamatban (2.x) Izolált munkavégző
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 vagy PurgeAllInstancesAsync
IDurableOrchestrationClient.CreateCheckStatusResponse DurableTaskClient.CreateCheckStatusResponseAsync (kiterjesztési metódus, fogad HttpRequestData)
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (kiterjesztési módszer, timeout helyébe CancellationToken)
IDurableOrchestrationClient.CreateHttpManagementPayload DurableTaskClient.CreateHttpManagementPayload (bővítménymetódus)
DurableOrchestrationStatus OrchestrationMetadata
DurableOrchestrationStatus.History Eltávolítva az állapotobjektumból. A DurableTaskClient.GetOrchestrationHistoryAsync használható helyette.
PurgeHistoryResult PurgeResult
OrchestrationStatusQueryCondition OrchestrationQuery
OrchestrationStatusQueryResult AsyncPageable<OrchestrationMetadata>

Eltávolított ügyfél API-k

A következő folyamaton belüli API-k nem rendelkeznek egyenértékűkkel az izolált feldolgozó SDK-ban:

Eltávolított API Workaround
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync Nincs egyenértékű
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) Használat GetInstanceAsync ciklusban vagy GetAllInstancesAsync lekérdezésszűrővel
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) Használat PurgeInstanceAsync hurokban vagy PurgeAllInstancesAsync szűrővel
Feladatközpontok közötti túlterhelések (RaiseEventAsync, SignalEntityAsync, ReadEntityStateAsync a taskHubName/connectionName) Csak az azonos feladatközponti műveletek támogatottak

Entitásügyfél API-k

Folyamatban (2.x) Izolált munkavégző
IDurableEntityClient.SignalEntityAsync DurableTaskClient.Entities.SignalEntityAsync
IDurableEntityClient.ReadEntityStateAsync DurableTaskClient.Entities.GetEntityAsync
IDurableEntityClient.ListEntitiesAsync DurableTaskClient.Entities.GetAllEntitiesAsync
IDurableEntityClient.CleanEntityStorageAsync DurableTaskClient.Entities.CleanEntityStorageAsync (a bool-paraméterek helyett objektumot vesz CleanEntityStorageRequest fel)

Vezénylési környezet API-k

Folyamatban (2.x) Izolált munkavégző
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>() vagy bemenetet injektálhat paraméterként: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input)
IDurableOrchestrationContext.SetOutput Eltávolított. Használja a vezénylő függvény visszatérési értékét.
IDurableOrchestrationContext.CallActivityAsync TaskOrchestrationContext.CallActivityAsync
IDurableOrchestrationContext.CallActivityWithRetryAsync TaskOrchestrationContext.CallActivityAsync egy TaskOptions paraméterrel az újrapróbálkozáshoz
IDurableOrchestrationContext.CallSubOrchestratorAsync TaskOrchestrationContext.CallSubOrchestratorAsync
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync TaskOrchestrationContext.CallSubOrchestratorAsync egy TaskOptions paraméterrel az újrapróbálkozáshoz
IDurableOrchestrationContext.ContinueAsNew TaskOrchestrationContext.ContinueAsNew (az alapértelmezett különbségek viselkedési változásainak megtekintése)
IDurableOrchestrationContext.CallHttpAsync TaskOrchestrationContext.CallHttpAsync
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken). Az állapotparaméter el lett távolítva.
IDurableOrchestrationContext.WaitForExternalEvent(string) (nem általános) Eltávolított. Használja a WaitForExternalEvent<T>(string, CancellationToken).
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (a defaultValue) Eltávolított. Használja a WaitForExternalEvent<T>(string, TimeSpan, CancellationToken) elemet, amely időtúllépés esetén TaskCanceledException kivételt dob.
IDurableOrchestrationContext.ParentInstanceId TaskOrchestrationContext.Parent.InstanceId
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) TaskOrchestrationContext.CreateReplaySafeLogger<T>() vagy TaskOrchestrationContext.CreateReplaySafeLogger(string)
IDurableOrchestrationContext.CreateEntityProxy<T> Eltávolított. Használja Entities.CallEntityAsync vagy Entities.SignalEntityAsync közvetlenül.
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 Nincs egyenértékű
DurableActivityContext.GetInput<T>() Bemenet injektálása paraméterként: MyActivity([ActivityTrigger] T input)
DurableHttpRequest (WebJobs-névtér) DurableHttpRequest (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http névtér)
DurableHttpResponse (WebJobs-névtér) DurableHttpResponse (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http névtér)

Entitás API-k

Folyamatban (2.x) Izolált munkavégző
IDurableEntityContext TaskEntityContext
IDurableEntityContext.EntityName TaskEntityContext.Id.Name
IDurableEntityContext.EntityKey TaskEntityContext.Id.Key
IDurableEntityContext.OperationName TaskEntityOperation.Name
IDurableEntityContext.FunctionBindingContext Eltávolított. Adja hozzá FunctionContext bemeneti paraméterként.
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 Eltávolított. Használja inkább a metódus visszatérési értékét.
IDurableEntityContext.SignalEntity TaskEntityContext.SignalEntity. Az ütemezett jelek paraméter-túlterhelés helyett SignalEntityOptions.SignalTime használhatókDateTime.
IDurableEntityContext.StartNewOrchestration TaskEntityContext.ScheduleNewOrchestration. A példányazonosító StartOrchestrationOptions.InstanceId segítségével van beállítva egy sztringparaméter helyett.
IDurableEntityContext.DispatchAsync TaskEntityDispatcher.DispatchAsync. A konstruktor paramjai el lettek távolítva; helyett használjon standard DI-t.
IDurableEntityContext.BatchSize Removed
IDurableEntityContext.BatchPosition Removed

Viselkedési változások

A migrált alkalmazás tesztelése előtt tekintse át ezeket a kompatibilitástörő viselkedésbeli változásokat.

A szerializálás alapértelmezett módosítása

Az alapértelmezett szerializáló a következőre Newtonsoft.JsonSystem.Text.Jsonváltozott: . A konfigurációs beállításokért lásd: Serialization és persistence in Durable Functions.

Warning

ContinueAsNew alapértelmezett változás: Az preserveUnprocessedEvents paraméter alapértelmezett értéke megváltozott false (2.x)-ről true (izolált)-ra. Ha az orchestráció ContinueAsNew és a feldolgozatlan események elvetésére támaszkodik, adja át explicit módon a preserveUnprocessedEvents: false.

Note

RestartAsync alapértelmezett módosítása: Az restartWithNewInstanceId paraméter alapértelmezése megváltozott a true (2.x) értékről false (izolált) értékre. Ha a kód meghívja RestartAsync, és függ attól, hogy új példányazonosító generálódjon, akkor explicit módon adja át restartWithNewInstanceId: true.

Egyéb viselkedésbeli változások

  • Entitásproxy eltávolítása: CreateEntityProxy<T> és a típusos delegált SignalEntityAsync<TEntityInterface>(Action<T>) túlterhelések nem állnak rendelkezésre az izolált feldolgozóban. Sztringalapú műveletnevek hívása Entities.CallEntityAsync vagy Entities.SignalEntityAsync közvetlen használata gépelt proxyillesztők használata helyett.
  • WaitForCompletionOrCreateCheckStatusResponseAsync: A timeout paraméter el lett távolítva. Használjon inkább CancellationToken lemondási időkorlátot.
  • A feladatközpontok közötti műveletek el lettek távolítva: Az elfogadott folyamaton belüli túlterhelések és taskHubName paraméterek nem érhetők el az izolált connectionName feldolgozóban. Csak az azonos feladatközponti műveletek támogatottak.
  • A kötegelt műveletek azonosító alapján el lettek távolítva: A folyamatban GetStatusAsync(IEnumerable<string>) lévő és PurgeInstanceHistoryAsync(IEnumerable<string>) a túlterhelések nem érhetők el. Használja a GetAllInstancesAsync elemet OrchestrationQuery szűrővel, vagy hívja meg a GetInstanceAsync/PurgeInstanceAsync elemeket egyenként.
  • A vezénylési előzmények áthelyezve: DurableOrchestrationStatus.History (a beágyazott JArray) már nem része az állapotobjektumnak. Használja a külön DurableTaskClient.GetOrchestrationHistoryAsync API-t.
  • Az Entity DispatchAsync konstruktor paramjai el lettek távolítva: Az entitásosztályok a standard függőséginjektáláson keresztül aktiválódnak. Regisztrálja az entitás függőségeit a következőben Program.cs: .
  • Az entitás lekérdezési szűrője megváltozik: fel lesz cserélve EntityQuery.EntityName-re, és EntityQuery.InstanceIdStartsWith fel lesz cserélve EntityQuery.IncludeDeleted-re.
  • CleanEntityStorageAsync aláírás módosítása: A bool paraméterek helyett egy CleanEntityStorageRequest objektumot RemoveEmptyEntities használ és ReleaseOrphanedLocks tulajdonságokat használ.
  • Új API-k izolált feldolgozóban: DurableTaskClient.GetOrchestrationHistoryAsync és a TaskOrchestrationContext.GetFunctionContext() bővítménymetódus nem rendelkezik a folyamaton belüli egyenértékűségével.