Durable Functions: インプロセスから分離ワーカー API へのマッピング

このリファレンスでは、インプロセス (2.x) SDK と分離 worker SDK for Durable Functionsの包括的なマッピングを提供します。 コードを更新するときは、 移行ガイド と共にこのページを使用します。

クライアント 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(拡張メソッド、timeoutCancellationTokenに置き換えられます)
IDurableOrchestrationClient.CreateHttpManagementPayload DurableTaskClient.CreateHttpManagementPayload (拡張メソッド)
DurableOrchestrationStatus OrchestrationMetadata
DurableOrchestrationStatus.History 状態オブジェクトから削除されました。 DurableTaskClient.GetOrchestrationHistoryAsync を代わりに使用します。
PurgeHistoryResult PurgeResult
OrchestrationStatusQueryCondition OrchestrationQuery
OrchestrationStatusQueryResult AsyncPageable<OrchestrationMetadata>

クライアント API を削除しました

次のインプロセス API には、分離された worker SDK には同等のものがありません。

削除された API Workaround
IDurableOrchestrationClient.MakeCurrentAppPrimaryAsync 同等の値はありません
IDurableOrchestrationClient.GetStatusAsync(IEnumerable<string>) ループまたはクエリ フィルターでGetAllInstancesAsyncGetInstanceAsyncを使用する
IDurableOrchestrationClient.PurgeInstanceHistoryAsync(IEnumerable<string>) ループで PurgeInstanceAsync を使用するか、フィルターを使用して PurgeAllInstancesAsync する
タスク ハブ間のオーバーロード (RaiseEventAsyncSignalEntityAsynctaskHubName/connectionNameを使用したReadEntityStateAsync) 同じタスク ハブ操作のみがサポートされます

エンティティ クライアント 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)。 State パラメーターが削除されました。
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 削除済み
IDurableEntityContext.BatchPosition 削除済み

動作の変更

移行したアプリをテストする前に、これらの破壊的動作の変更を確認してください。

シリアル化の既定の変更

既定のシリアライザーが Newtonsoft.Json から System.Text.Json に変更されました。 構成オプションについては、 Durable Functionsを参照してください。

警告

ContinueAsNew の既定の変更: preserveUnprocessedEvents パラメーターの既定値が false (2.x) から true (分離) に変更されました。 オーケストレーションで ContinueAsNew を使用し、破棄される未処理のイベントに依存している場合は、 preserveUnprocessedEvents: falseを明示的に渡します。

Note

RestartAsync の既定の変更: restartWithNewInstanceId パラメーターの既定値が true (2.x) から false (分離) に変更されました。 コードが RestartAsync を呼び出し、生成される新しいインスタンス ID に依存している場合は、 restartWithNewInstanceId: trueを明示的に渡します。

その他の動作の変更

  • エンティティ プロキシの削除: 分離されたワーカーでは、 CreateEntityProxy<T> および型指定された SignalEntityAsync<TEntityInterface>(Action<T>) デリゲート オーバーロードは使用できません。 型指定されたプロキシ インターフェイスを使用する代わりに、文字列ベースの操作名を使用して Entities.CallEntityAsync または Entities.SignalEntityAsync を直接呼び出します。
  • WaitForCompletionOrCreateCheckStatusResponseAsync: timeout パラメーターが削除されました。 代わりに、取り消しタイムアウトの CancellationToken を使用してください。
  • タスク ハブ間の操作が削除されました: taskHubName パラメーターと connectionName パラメーターを受け入れたインプロセス オーバーロードは、分離された worker では使用できません。 同じタスク ハブ操作のみがサポートされます。
  • ID によるバッチ操作が削除されました:インプロセス GetStatusAsync(IEnumerable<string>) および PurgeInstanceHistoryAsync(IEnumerable<string>) オーバーロードは使用できません。 GetAllInstancesAsync フィルターを使用するか、OrchestrationQueryGetInstanceAsync/を個別に呼び出します。
  • 移動されたオーケストレーション履歴: DurableOrchestrationStatus.History (埋め込み JArray) は、状態オブジェクトの一部ではなくなりました。 個別の DurableTaskClient.GetOrchestrationHistoryAsync API を使用します。
  • Entity DispatchAsync コンストラクターのパラメーターが削除されました。エンティティ クラスは、標準の依存関係の挿入によってアクティブ化されます。 エンティティの依存関係を Program.csに登録します。
  • エンティティ クエリ フィルターの変更: EntityQuery.EntityNameEntityQuery.InstanceIdStartsWithに置き換えられ、 EntityQuery.IncludeDeletedEntityQuery.IncludeTransientに置き換えられます。
  • CleanEntityStorageAsync シグネチャの変更: ブール パラメーターではなく、RemoveEmptyEntitiesプロパティとReleaseOrphanedLocks プロパティを持つCleanEntityStorageRequest オブジェクトを受け取ります。
  • 分離ワーカーの新しい API: DurableTaskClient.GetOrchestrationHistoryAsyncTaskOrchestrationContext.GetFunctionContext() 拡張メソッドには、インプロセスと同等の機能はありません。