이 참조는 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 |
TaskOptions와 TaskRetryOptions |
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
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>)오버로드를 사용할 수 없습니다.GetAllInstancesAsync은OrchestrationQuery필터와 함께 사용하거나GetInstanceAsync/PurgeInstanceAsync을 개별적으로 호출합니다. -
오케스트레이션 기록이 이동되었습니다
DurableOrchestrationStatus.History. (포함된JArray)는 더 이상 상태 개체의 일부가 아닙니다. 별도의DurableTaskClient.GetOrchestrationHistoryAsyncAPI를 사용합니다. -
Entity DispatchAsync 생성자 매개 변수가 제거됨: 엔터티 클래스는 표준 종속성 주입을 통해 활성화됩니다.
Program.cs에서 엔터티의 종속성을 등록합니다. -
엔터티 쿼리 필터 변경 내용:
EntityQuery.EntityName은EntityQuery.InstanceIdStartsWith로 대체되고,EntityQuery.IncludeDeleted는EntityQuery.IncludeTransient로 대체됩니다. -
CleanEntityStorageAsync 서명 변경: 부울 매개 변수 대신 속성과
ReleaseOrphanedLocks함께RemoveEmptyEntities개체를 사용합니다CleanEntityStorageRequest. -
격리된 작업자의 새 API:
DurableTaskClient.GetOrchestrationHistoryAsync확장TaskOrchestrationContext.GetFunctionContext()메서드에는 In-process에 해당하는 API가 없습니다.