Durable Functions: 격리된 작업자 API 매핑에 대한 in-process

이 참조는 in-process(2.x) SDK와 Durable Functions 격리된 작업자 SDK 간의 포괄적인 매핑을 제공합니다. 코드를 업데이트할 때 마이그레이션 가이드 와 함께 이 페이지를 사용합니다.

클라이언트 API

인프로세스(2.x) 격리된 작업자
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 또는 PurgeAllInstancesAsync
IDurableOrchestrationClient.CreateCheckStatusResponse DurableTaskClient.CreateCheckStatusResponseAsync (확장 메서드, HttpRequestData를 받는다)
IDurableOrchestrationClient.WaitForCompletionOrCreateCheckStatusResponseAsync DurableTaskClient.WaitForCompletionOrCreateCheckStatusResponseAsync(확장 메서드, timeout 대체)CancellationToken
IDurableOrchestrationClient.CreateHttpManagementPayload DurableTaskClient.CreateHttpManagementPayload (extension 메서드)
DurableOrchestrationStatus OrchestrationMetadata
DurableOrchestrationStatus.History 상태 개체에서 제거되었습니다. DurableTaskClient.GetOrchestrationHistoryAsync를 대신 사용하세요.
PurgeHistoryResult PurgeResult
OrchestrationStatusQueryCondition OrchestrationQuery
OrchestrationStatusQueryResult AsyncPageable<OrchestrationMetadata>

클라이언트 API 제거됨

다음 In-process API에는 격리된 작업자 SDK에 해당하는 API가 없습니다.

제거된 API Workaround
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync 동등한 항목 없음
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) 루프 또는 GetAllInstancesAsync 쿼리 필터에서 사용 GetInstanceAsync
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) 루프 또는 PurgeAllInstancesAsync 필터와 함께 사용 PurgeInstanceAsync
작업 허브 간 오버로드(RaiseEventAsync, SignalEntityAsync포함connectionNameReadEntityStateAsynctaskHubName/) 동일한 작업 허브 작업만 지원됩니다.

엔터티 클라이언트 API

인프로세스(2.x) 격리된 작업자
IDurableEntityClient.SignalEntityAsync DurableTaskClient.Entities.SignalEntityAsync
IDurableEntityClient.ReadEntityStateAsync DurableTaskClient.Entities.GetEntityAsync
IDurableEntityClient.ListEntitiesAsync DurableTaskClient.Entities.GetAllEntitiesAsync
IDurableEntityClient.CleanEntityStorageAsync DurableTaskClient.Entities.CleanEntityStorageAsync (bool 매개 변수 대신 개체를 사용합니다 CleanEntityStorageRequest .)

오케스트레이션 컨텍스트 API

인프로세스(2.x) 격리된 작업자
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>() 또는 입력을 매개 변수로 삽입합니다. MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input)
IDurableOrchestrationContext.SetOutput 제거. 오케스트레이터 함수의 반환 값을 사용합니다.
IDurableOrchestrationContext.CallActivityAsync TaskOrchestrationContext.CallActivityAsync
IDurableOrchestrationContext.CallActivityWithRetryAsync TaskOrchestrationContext.CallActivityAsync 재시도 TaskOptions 세부 정보를 위한 매개 변수 포함
IDurableOrchestrationContext.CallSubOrchestratorAsync TaskOrchestrationContext.CallSubOrchestratorAsync
IDurableOrchestrationContext.CallSubOrchestratorWithRetryAsync TaskOrchestrationContext.CallSubOrchestratorAsync 재시도 TaskOptions 세부 정보를 위한 매개 변수 포함
IDurableOrchestrationContext.ContinueAsNew TaskOrchestrationContext.ContinueAsNew (기본 차이점에 대한 동작 변경 참조)
IDurableOrchestrationContext.CallHttpAsync TaskOrchestrationContext.CallHttpAsync
IDurableOrchestrationContext.CreateTimer<T>(DateTime, T, CancellationToken) TaskOrchestrationContext.CreateTimer(DateTime, CancellationToken); 상태 매개 변수가 제거되었습니다.
IDurableOrchestrationContext.WaitForExternalEvent(string) (제네릭이 아닌) 제거. WaitForExternalEvent<T>(string, CancellationToken)을 사용합니다.
IDurableOrchestrationContext.WaitForExternalEvent<T>(string, TimeSpan, T) (와 defaultValue) 제거. 시간 초과 시 WaitForExternalEvent<T>(string, TimeSpan, CancellationToken)을 발생시키는 TaskCanceledException을 사용하세요.
IDurableOrchestrationContext.ParentInstanceId TaskOrchestrationContext.Parent.InstanceId
IDurableOrchestrationContext.CreateReplaySafeLogger(ILogger) TaskOrchestrationContext.CreateReplaySafeLogger<T>() 또는 TaskOrchestrationContext.CreateReplaySafeLogger(string)
IDurableOrchestrationContext.CreateEntityProxy<T> 제거. Entities.CallEntityAsync 또는 Entities.SignalEntityAsync를 직접 사용하세요.
IDurableOrchestrationContext.CallEntityAsync TaskOrchestrationContext.Entities.CallEntityAsync
IDurableOrchestrationContext.SignalEntity TaskOrchestrationContext.Entities.SignalEntityAsync
IDurableOrchestrationContext.LockAsync TaskOrchestrationContext.Entities.LockEntitiesAsync
IDurableOrchestrationContext.IsLocked TaskOrchestrationContext.Entities.InCriticalSection()
RetryOptions TaskOptionsTaskRetryOptions
DurableActivityContext 동등한 항목 없음
DurableActivityContext.GetInput<T>() 입력을 매개 변수로 삽입합니다. MyActivity([ActivityTrigger] T input)
DurableHttpRequest (WebJobs 네임스페이스) DurableHttpRequest(Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http 네임스페이스)
DurableHttpResponse (WebJobs 네임스페이스) DurableHttpResponse(Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Http 네임스페이스)

엔터티 API

인프로세스(2.x) 격리된 작업자
IDurableEntityContext TaskEntityContext
IDurableEntityContext.EntityName TaskEntityContext.Id.Name
IDurableEntityContext.EntityKey TaskEntityContext.Id.Key
IDurableEntityContext.OperationName TaskEntityOperation.Name
IDurableEntityContext.FunctionBindingContext 제거. 입력 매개 변수로 추가 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 제거. 대신 메서드 반환 값을 사용합니다.
IDurableEntityContext.SignalEntity TaskEntityContext.SignalEntity; 예약된 신호는 매개 변수 오버로드 대신 SignalEntityOptions.SignalTime 사용합니다DateTime.
IDurableEntityContext.StartNewOrchestration TaskEntityContext.ScheduleNewOrchestration; 인스턴스 ID는 문자열 매개 변수 대신 설정 StartOrchestrationOptions.InstanceId 됩니다.
IDurableEntityContext.DispatchAsync TaskEntityDispatcher.DispatchAsync; 생성자 매개 변수가 제거되었습니다. 대신 표준 DI를 사용합니다.
IDurableEntityContext.BatchSize Removed
IDurableEntityContext.BatchPosition Removed

동작 변경

마이그레이션된 앱을 테스트하기 전에 이러한 호환성이 손상되는 동작 변경을 검토합니다.

Serialization 기본값이 변경됨

기본 serializer가 .로 Newtonsoft.JsonSystem.Text.Json변경되었습니다. 구성 옵션은 Durable Functions Serialization 및 지속성을 참조하세요.

Warning

ContinueAsNew 기본 변경: 매개 변수 기본값이 preserveUnprocessedEvents (2.x)에서 false (격리됨)으로 true 변경되었습니다. 오케스트레이션에서 ContinueAsNew를 사용하고 처리되지 않은 이벤트가 버려지는 경우, preserveUnprocessedEvents: false을 명시적으로 전달합니다.

Note

RestartAsync 기본 변경: 매개 변수 기본값이 restartWithNewInstanceId (2.x)에서 true (격리됨)으로 false 변경되었습니다. 코드가 RestartAsync를 호출하고 새 인스턴스 ID 생성에 의존하는 경우 restartWithNewInstanceId: true를 명시적으로 전달합니다.

기타 동작 변경

  • 엔터티 프록시 제거: CreateEntityProxy<T> 형식화된 SignalEntityAsync<TEntityInterface>(Action<T>) 대리자 오버로드는 격리된 작업자에서 사용할 수 없습니다. 형식화된 프록시 인터페이스를 사용하는 대신 문자열 기반의 작업 이름을 사용하여 Entities.CallEntityAsync 또는 Entities.SignalEntityAsync를 직접 호출합니다.
  • WaitForCompletionOrCreateCheckStatusResponseAsync: timeout 매개 변수가 제거되었습니다. CancellationToken 대신 취소 시간 제한을 사용합니다.
  • 작업 허브 간 작업이 제거됨: 허용 taskHubName 된 in-process 오버로드 및 connectionName 매개 변수는 격리된 작업자에서 사용할 수 없습니다. 동일 작업 허브만 지원됩니다.
  • ID별 일괄 처리 작업이 제거됨: In-Process GetStatusAsync(IEnumerable<string>)PurgeInstanceHistoryAsync(IEnumerable<string>) 오버로드를 사용할 수 없습니다. GetAllInstancesAsyncOrchestrationQuery 필터와 함께 사용하거나 GetInstanceAsync/PurgeInstanceAsync을 개별적으로 호출합니다.
  • 오케스트레이션 기록이 이동되었습니다DurableOrchestrationStatus.History. (포함된JArray)는 더 이상 상태 개체의 일부가 아닙니다. 별도의 DurableTaskClient.GetOrchestrationHistoryAsync API를 사용합니다.
  • Entity DispatchAsync 생성자 매개 변수가 제거됨: 엔터티 클래스는 표준 종속성 주입을 통해 활성화됩니다. Program.cs에서 엔터티의 종속성을 등록합니다.
  • 엔터티 쿼리 필터 변경 내용: EntityQuery.EntityNameEntityQuery.InstanceIdStartsWith로 대체되고, EntityQuery.IncludeDeletedEntityQuery.IncludeTransient로 대체됩니다.
  • CleanEntityStorageAsync 서명 변경: 부울 매개 변수 대신 속성과 ReleaseOrphanedLocks 함께 RemoveEmptyEntities 개체를 사용합니다CleanEntityStorageRequest.
  • 격리된 작업자의 새 API: DurableTaskClient.GetOrchestrationHistoryAsync 확장 TaskOrchestrationContext.GetFunctionContext() 메서드에는 In-process에 해당하는 API가 없습니다.