Dayanıklı İşlevler: yalıtılmış çalışan API eşlemesi için işlem içi

Bu başvuru, Dayanıklı İşlevler için işlem içi (2.x) SDK ile yalıtılmış çalışan SDK'sı arasında kapsamlı bir eşleme sağlar. Kodunuzu güncelleştirirken geçiş kılavuzunun yanı sıra bu sayfayı kullanın.

İstemci API'leri

İşlem içi (2.x) Yalıtılmış çalışan
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 veya PurgeAllInstancesAsync
IDurableOrchestrationClient.CreateCheckStatusResponse DurableTaskClient.CreateCheckStatusResponseAsync (uzantı yöntemi, alır HttpRequestData)
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync (uzantı yöntemi, timeout ile CancellationTokendeğiştirilir)
IDurableOrchestrationClient.CreateHttpManagementPayload DurableTaskClient.CreateHttpManagementPayload (uzantı yöntemi)
DurableOrchestrationStatus OrchestrationMetadata
DurableOrchestrationStatus.History Durum nesnesinden kaldırıldı. Bunun yerine DurableTaskClient.GetOrchestrationHistoryAsync kullanın.
PurgeHistoryResult PurgeResult
OrchestrationStatusQueryCondition OrchestrationQuery
OrchestrationStatusQueryResult AsyncPageable<OrchestrationMetadata>

İstemci API'leri kaldırıldı

Aşağıdaki işlem içi API'lerin yalıtılmış çalışan SDK'sında eşdeğerleri yoktur:

API kaldırıldı Workaround
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync Eşdeğeri yok
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) Döngüde veya GetAllInstancesAsync sorgu filtresiyle kullanma GetInstanceAsync
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) Döngüde veya PurgeAllInstancesAsync filtreyle kullanma PurgeInstanceAsync
Çapraz görev hub'ı aşırı yüklemeleri (RaiseEventAsync, SignalEntityAsyncile taskHubName/ReadEntityStateAsyncconnectionName) Yalnızca aynı görev hub'ı işlemleri desteklenir

Varlık istemcisi API'leri

İşlem içi (2.x) Yalıtılmış çalışan
IDurableEntityClient.SignalEntityAsync DurableTaskClient.Entities.SignalEntityAsync
IDurableEntityClient.ReadEntityStateAsync DurableTaskClient.Entities.GetEntityAsync
IDurableEntityClient.ListEntitiesAsync DurableTaskClient.Entities.GetAllEntitiesAsync
IDurableEntityClient.CleanEntityStorageAsync DurableTaskClient.Entities.CleanEntityStorageAsync (bool parametreleri yerine nesne alır CleanEntityStorageRequest )

Orkestrasyon bağlam API'leri

İşlem içi (2.x) Yalıtılmış çalışan
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>() veya girişi parametre olarak enjekte edin: MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input)
IDurableOrchestrationContext.SetOutput Kaldırıldı. Orchestrator işlevinden dönüş değerini kullanın.
IDurableOrchestrationContext.CallActivityAsync TaskOrchestrationContext.CallActivityAsync
IDurableOrchestrationContext.CallActivityWithRetryAsync TaskOrchestrationContext.CallActivityAsync yeniden deneme ayrıntıları için bir TaskOptions parametre ile
IDurableOrchestrationContext.CallSubOrchestratorAsync TaskOrchestrationContext.CallSubOrchestratorAsync
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync TaskOrchestrationContext.CallSubOrchestratorAsync yeniden deneme ayrıntıları için bir TaskOptions parametre ile
IDurableOrchestrationContext.ContinueAsNew TaskOrchestrationContext.ContinueAsNew (varsayılan farklar için davranış değişikliklerine bakın)
IDurableOrchestrationContext.CallHttpAsync TaskOrchestrationContext.CallHttpAsync
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken). Durum parametresi kaldırıldı.
IDurableOrchestrationContext.WaitForExternalEvent(string) (genel olmayan) Kaldırıldı. WaitForExternalEvent<T>(string, CancellationToken) adresini kullanın.
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (ile defaultValue) Kaldırıldı. WaitForExternalEvent<T>(string, TimeSpan, CancellationToken) kullanın, bu zaman aşımında TaskCanceledException fırlatır.
IDurableOrchestrationContext.ParentInstanceId TaskOrchestrationContext.Parent.InstanceId
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) TaskOrchestrationContext.CreateReplaySafeLogger<T>() veya TaskOrchestrationContext.CreateReplaySafeLogger(string)
IDurableOrchestrationContext.CreateEntityProxy<T> Kaldırıldı. Entities.CallEntityAsync Veya doğrudan kullanınEntities.SignalEntityAsync.
IDurableOrchestrationContext.CallEntityAsync TaskOrchestrationContext.Entities.CallEntityAsync
IDurableOrchestrationContext.SignalEntity TaskOrchestrationContext.Entities.SignalEntityAsync
IDurableOrchestrationContext.LockAsync TaskOrchestrationContext.Entities.LockEntitiesAsync
IDurableOrchestrationContext.IsLocked TaskOrchestrationContext.Entities.InCriticalSection()
RetryOptions TaskOptions ile TaskRetryOptions
DurableActivityContext Eşdeğeri yok
DurableActivityContext.GetInput<T>() Girdiyi parametre olarak enjekte et: MyActivity([ActivityTrigger] T input)
DurableHttpRequest (WebJobs ad alanı) DurableHttpRequest (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http ad alanı)
DurableHttpResponse (WebJobs ad alanı) DurableHttpResponse (Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http ad alanı)

Varlık API'leri

İşlem içi (2.x) Yalıtılmış çalışan
IDurableEntityContext TaskEntityContext
IDurableEntityContext.EntityName TaskEntityContext.Id.Name
IDurableEntityContext.EntityKey TaskEntityContext.Id.Key
IDurableEntityContext.OperationName TaskEntityOperation.Name
IDurableEntityContext.FunctionBindingContext Kaldırıldı. Giriş parametresi olarak ekleyin 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 Kaldırıldı. Bunun yerine yöntem dönüş değerini kullanın.
IDurableEntityContext.SignalEntity TaskEntityContext.SignalEntity. Zamanlanmış sinyaller parametre aşırı yüklemesi yerine SignalEntityOptions.SignalTime kullanırDateTime.
IDurableEntityContext.StartNewOrchestration TaskEntityContext.ScheduleNewOrchestration. Örnek kimliği, bir dize parametresi yerine StartOrchestrationOptions.InstanceId aracılığıyla ayarlanır.
IDurableEntityContext.DispatchAsync TaskEntityDispatcher.DispatchAsync. Oluşturucu parametreleri kaldırıldı; yerine standart DI kullanın.
IDurableEntityContext.BatchSize Removed
IDurableEntityContext.BatchPosition Removed

Davranış değişiklikleri

Geçirilen uygulamanızı test etmeden önce bu hataya neden olan davranış değişikliklerini gözden geçirin.

Serileştirme varsayılanı değiştirildi

Varsayılan seri hale getirici olarak Newtonsoft.JsonSystem.Text.Jsondeğiştirildi. Yapılandırma seçenekleri için bkz. Serialization and persistence in Dayanıklı İşlevler.

Uyarı

ContinueAsNew varsayılan değişikliği: Parametre preserveUnprocessedEvents varsayılanı (2.x) olan false (yalıtılmış) true olarak değiştirildi. Düzenlemeniz ContinueAsNew kullanıyorsa ve işlenmemiş olayların atılmasına bağlıysa, açıkça preserveUnprocessedEvents: false'i geçirmeniz gerek.

Uyarı

RestartAsync varsayılan değişikliği: Parametre restartWithNewInstanceId varsayılanı (2.x) olan true (yalıtılmış) false olarak değiştirildi. Kodunuz RestartAsync çağırırsa ve bu, yeni bir örnek kimliğinin oluşturulmasına bağlıysa, restartWithNewInstanceId: true'i açıkça geçirin.

Diğer davranış değişiklikleri

  • Varlık ara sunucusunu kaldırma: CreateEntityProxy<T> ve tipli SignalEntityAsync<TEntityInterface>(Action<T>) temsilci aşırı yüklemeleri yalıtılmış çalışanda kullanılamaz. Entities.CallEntityAsync veya Entities.SignalEntityAsync öğelerini doğrudan dize tabanlı işlem adlarıyla çağırın, yazılan ara sunucu arabirimlerini kullanmak yerine.
  • WaitForCompletionOrCreateCheckStatusResponseAsync: timeout Parametresi kaldırıldı. Bunun yerine bir iptal zaman aşımı ile CancellationToken kullanın.
  • Görevler arası hub işlemleri kaldırıldı: Kabul edilen taskHubName işlem içi aşırı yüklemeler ve connectionName parametreler yalıtılmış çalışanda kullanılamaz. Yalnızca aynı görev merkezli hub işlemleri desteklenir.
  • Kimliğe göre toplu işlemler kaldırıldı: İşlem GetStatusAsync(IEnumerable<string>) içi ve PurgeInstanceHistoryAsync(IEnumerable<string>) aşırı yüklemeler kullanılamaz. Tek başına GetAllInstancesAsync veya OrchestrationQuery filtresiyle çağrıyı GetInstanceAsync/PurgeInstanceAsync kullanın.
  • Düzenleme geçmişi taşındı: DurableOrchestrationStatus.History (eklenmiş JArray) artık durum nesnesinin bir parçası değil. Ayrı DurableTaskClient.GetOrchestrationHistoryAsync API'yi kullanın.
  • Entity DispatchAsync oluşturucu parametreleri kaldırıldı: Varlık sınıfları standart bağımlılık ekleme yoluyla etkinleştirilir. Varlığınızın bağımlılıklarını Program.cs içinde kaydedin.
  • Varlık sorgusu filtresi değişiklikleri: EntityQuery.EntityName ile değiştirilir EntityQuery.InstanceIdStartsWithve EntityQuery.IncludeDeleted ile değiştirilir EntityQuery.IncludeTransient.
  • CleanEntityStorageAsync imza değişikliği: Bool parametreleri yerine ve ReleaseOrphanedLocks özelliklerine sahip RemoveEmptyEntities bir CleanEntityStorageRequest nesne alır.
  • Yalıtılmış çalışandaki yeni API'ler: DurableTaskClient.GetOrchestrationHistoryAsync ve uzantı yönteminin TaskOrchestrationContext.GetFunctionContext() işlem içi eşdeğeri yoktur.