Durable Functions: dalam proses untuk pemetaan API pekerja yang terisolasi

Referensi ini menyediakan pemetaan komprehensif antara SDK dalam proses (2.x) dan SDK pekerja terisolasi untuk Durable Functions. Gunakan halaman ini bersama panduan migrasi saat memperbarui kode Anda.

API Pelanggan

Sedang dalam proses (2.x) Pekerja terisolasi
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 atau PurgeAllInstancesAsync
IDurableOrchestrationClient.CreateCheckStatusResponse DurableTaskClient.CreateCheckStatusResponseAsync (metode ekstensi, menerima HttpRequestData)
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (metode ekstensi, timeout digantikan oleh CancellationToken)
IDurableOrchestrationClient.CreateHttpManagementPayload DurableTaskClient.CreateHttpManagementPayload (metode ekstensi)
DurableOrchestrationStatus OrchestrationMetadata
DurableOrchestrationStatus.History Dihapus dari objek status. Gunakan DurableTaskClient.GetOrchestrationHistoryAsync sebagai gantinya.
PurgeHistoryResult PurgeResult
OrchestrationStatusQueryCondition OrchestrationQuery
OrchestrationStatusQueryResult AsyncPageable<OrchestrationMetadata>

API klien yang dihapus

API dalam proses berikut tidak memiliki yang setara dalam SDK pekerja yang terisolasi:

API yang Dihapus Workaround
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync Tidak ada yang setara
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) Gunakan GetInstanceAsync dalam perulangan atau GetAllInstancesAsync dengan filter kueri
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) Gunakan PurgeInstanceAsync dalam perulangan atau PurgeAllInstancesAsync dengan filter
Kelebihan hub lintas tugas (RaiseEventAsync, , SignalEntityAsyncReadEntityStateAsync dengan taskHubName/connectionName) Hanya operasi hub tugas yang sama yang didukung

API klien entitas

Sedang dalam proses (2.x) Pekerja terisolasi
IDurableEntityClient.SignalEntityAsync DurableTaskClient.Entities.SignalEntityAsync
IDurableEntityClient.ReadEntityStateAsync DurableTaskClient.Entities.GetEntityAsync
IDurableEntityClient.ListEntitiesAsync DurableTaskClient.Entities.GetAllEntitiesAsync
IDurableEntityClient.CleanEntityStorageAsync DurableTaskClient.Entities.CleanEntityStorageAsync (mengambil objek CleanEntityStorageRequest bukan parameter bool)

API konteks orkestrasi

Sedang dalam proses (2.x) Pekerja terisolasi
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>() atau masukkan input sebagai parameter: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input)
IDurableOrchestrationContext.SetOutput Dihapus. Gunakan nilai pengembalian dari fungsi orkestrator.
IDurableOrchestrationContext.CallActivityAsync TaskOrchestrationContext.CallActivityAsync
IDurableOrchestrationContext.CallActivityWithRetryAsync TaskOrchestrationContext.CallActivityAsync TaskOptions dengan parameter untuk detail coba lagi
IDurableOrchestrationContext.CallSubOrchestratorAsync TaskOrchestrationContext.CallSubOrchestratorAsync
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync TaskOrchestrationContext.CallSubOrchestratorAsync TaskOptions dengan parameter untuk detail coba lagi
IDurableOrchestrationContext.ContinueAsNew TaskOrchestrationContext.ContinueAsNew (lihat perubahan perilaku untuk perbedaan default)
IDurableOrchestrationContext.CallHttpAsync TaskOrchestrationContext.CallHttpAsync
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken). Parameter status dihapus.
IDurableOrchestrationContext.WaitForExternalEvent(string) (non-generik) Dihapus. Gunakan WaitForExternalEvent<T>(string, CancellationToken).
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (dengan defaultValue) Dihapus. Gunakan WaitForExternalEvent<T>(string, TimeSpan, CancellationToken), yang melempar TaskCanceledException saat waktu habis.
IDurableOrchestrationContext.ParentInstanceId TaskOrchestrationContext.Parent.InstanceId
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) TaskOrchestrationContext.CreateReplaySafeLogger<T>() atau TaskOrchestrationContext.CreateReplaySafeLogger(string)
IDurableOrchestrationContext.CreateEntityProxy<T> Dihapus. Gunakan Entities.CallEntityAsync atau Entities.SignalEntityAsync secara langsung.
IDurableOrchestrationContext.CallEntityAsync TaskOrchestrationContext.Entities.CallEntityAsync
IDurableOrchestrationContext.SignalEntity TaskOrchestrationContext.Entities.SignalEntityAsync
IDurableOrchestrationContext.LockAsync TaskOrchestrationContext.Entities.LockEntitiesAsync
IDurableOrchestrationContext.IsLocked TaskOrchestrationContext.Entities.InCriticalSection()
RetryOptions TaskOptions dengan TaskRetryOptions
DurableActivityContext Tidak ada yang setara
DurableActivityContext.GetInput<T>() Masukkan input sebagai parameter: MyActivity([ActivityTrigger] T input)
DurableHttpRequest (Namespace WebJobs) DurableHttpRequest (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http ruang nama)
DurableHttpResponse (Namespace WebJobs) DurableHttpResponse (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http ruang nama)

API Entitas

Sedang dalam proses (2.x) Pekerja terisolasi
IDurableEntityContext TaskEntityContext
IDurableEntityContext.EntityName TaskEntityContext.Id.Name
IDurableEntityContext.EntityKey TaskEntityContext.Id.Key
IDurableEntityContext.OperationName TaskEntityOperation.Name
IDurableEntityContext.FunctionBindingContext Dihapus. Tambahkan FunctionContext sebagai parameter input.
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 Dihapus. Gunakan nilai yang dikembalikan oleh metode sebagai gantinya.
IDurableEntityContext.SignalEntity TaskEntityContext.SignalEntity. Sinyal terjadwal menggunakan SignalEntityOptions.SignalTime alih-alih DateTime kelebihan parameter.
IDurableEntityContext.StartNewOrchestration TaskEntityContext.ScheduleNewOrchestration. ID instans diatur melalui StartOrchestrationOptions.InstanceId alih-alih parameter string.
IDurableEntityContext.DispatchAsync TaskEntityDispatcher.DispatchAsync. Param konstruktor dihapus; gunakan DI standar sebagai gantinya.
IDurableEntityContext.BatchSize Removed
IDurableEntityContext.BatchPosition Removed

Perubahan perilaku

Tinjau perubahan perilaku yang melanggar ini sebelum menguji aplikasi yang dimigrasikan.

Default serialisasi berubah

Serializer default berubah dari Newtonsoft.Json ke System.Text.Json. Untuk opsi konfigurasi, lihat Serialisasi dan persistensi dalam Durable Functions.

Warning

Perubahan default ContinueAsNew: Parameter preserveUnprocessedEvents default berubah dari false (2.x) menjadi true (terisolasi). Jika orkestrasi Anda menggunakan ContinueAsNew dan mengandalkan pembuangan peristiwa yang tidak diproses, operasikan secara eksplisit preserveUnprocessedEvents: false.

Note

Perubahan default RestartAsync: Parameter restartWithNewInstanceId default berubah dari true (2.x) menjadi false (terisolasi). Jika kode Anda memanggil RestartAsync dan bergantung pada ID instans baru yang dihasilkan, berikan secara eksplisit restartWithNewInstanceId: true.

Perubahan perilaku lainnya

  • Penghapusan proksi entitas: CreateEntityProxy<T> dan overload delegasi yang diketik SignalEntityAsync<TEntityInterface>(Action<T>) tidak tersedia di pekerja terisolasi. Panggil Entities.CallEntityAsync atau Entities.SignalEntityAsync langsung dengan nama operasi berbasis string alih-alih menggunakan antarmuka proksi yang ditik.
  • WaitForCompletionOrCreateCheckStatusResponseAsync: Parameter timeout telah dihapus. Gunakan sebuah CancellationToken dengan batas waktu pembatalan sebagai gantinya.
  • Operasi hub lintas tugas dihapus: Kelebihan beban dalam proses yang diterima taskHubName dan connectionName parameter tidak tersedia di pekerja yang terisolasi. Hanya operasi hub tugas yang sama yang didukung.
  • Operasi batch berdasarkan ID dihapus: Proses GetStatusAsync(IEnumerable<string>) dan PurgeInstanceHistoryAsync(IEnumerable<string>) kelebihan beban tidak tersedia. Gunakan GetAllInstancesAsync dengan OrchestrationQuery filter atau panggil GetInstanceAsync/PurgeInstanceAsync secara individual.
  • Riwayat orkestrasi dipindahkan: DurableOrchestrationStatus.History (yang disematkan JArray) bukan lagi bagian dari objek status. Gunakan API terpisah DurableTaskClient.GetOrchestrationHistoryAsync .
  • Param konstruktor Entity DispatchAsync dihapus: Kelas entitas diaktifkan melalui injeksi dependensi standar. Daftarkan dependensi entitas Anda di Program.cs.
  • Perubahan filter kueri entitas: EntityQuery.EntityName digantikan oleh EntityQuery.InstanceIdStartsWith, dan EntityQuery.IncludeDeleted digantikan oleh EntityQuery.IncludeTransient.
  • Perubahan tanda tangan CleanEntityStorageAsync: Mengambil CleanEntityStorageRequest objek dengan RemoveEmptyEntities properti dan ReleaseOrphanedLocks alih-alih parameter bool.
  • API baru dalam pekerja terisolasi: DurableTaskClient.GetOrchestrationHistoryAsync dan TaskOrchestrationContext.GetFunctionContext() metode ekstensi tidak memiliki setara dalam proses.