Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 diketikSignalEntityAsync<TEntityInterface>(Action<T>)tidak tersedia di pekerja terisolasi. PanggilEntities.CallEntityAsyncatauEntities.SignalEntityAsynclangsung dengan nama operasi berbasis string alih-alih menggunakan antarmuka proksi yang ditik. -
WaitForCompletionOrCreateCheckStatusResponseAsync: Parameter
timeouttelah dihapus. Gunakan sebuahCancellationTokendengan batas waktu pembatalan sebagai gantinya. -
Operasi hub lintas tugas dihapus: Kelebihan beban dalam proses yang diterima
taskHubNamedanconnectionNameparameter tidak tersedia di pekerja yang terisolasi. Hanya operasi hub tugas yang sama yang didukung. -
Operasi batch berdasarkan ID dihapus: Proses
GetStatusAsync(IEnumerable<string>)danPurgeInstanceHistoryAsync(IEnumerable<string>)kelebihan beban tidak tersedia. GunakanGetAllInstancesAsyncdenganOrchestrationQueryfilter atau panggilGetInstanceAsync/PurgeInstanceAsyncsecara individual. -
Riwayat orkestrasi dipindahkan:
DurableOrchestrationStatus.History(yang disematkanJArray) bukan lagi bagian dari objek status. Gunakan API terpisahDurableTaskClient.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.EntityNamedigantikan olehEntityQuery.InstanceIdStartsWith, danEntityQuery.IncludeDeleteddigantikan olehEntityQuery.IncludeTransient. -
Perubahan tanda tangan CleanEntityStorageAsync: Mengambil
CleanEntityStorageRequestobjek denganRemoveEmptyEntitiesproperti danReleaseOrphanedLocksalih-alih parameter bool. -
API baru dalam pekerja terisolasi:
DurableTaskClient.GetOrchestrationHistoryAsyncdanTaskOrchestrationContext.GetFunctionContext()metode ekstensi tidak memiliki setara dalam proses.
Konten terkait
- panduan Migration: Durable Functions dari dalam proses ke pekerja terisolasi
- Serialisasi dan persistensi dalam Durable Functions
- Referensi API SDK proses In (
Microsoft.Azure.WebJobs.Extensions.DurableTask) - referensi SDK API pekerja Isolated (
Microsoft.DurableTask)