Durable Functions は、Azure Functions および Azure WebJobs の拡張機能であり、サーバーレス環境でステートフル関数を記述できます。 この拡張機能は状態、チェックポイント、再起動を管理します。 Durable Functionsにまだ慣れていない場合は、overview のドキュメントを参照してください。
バージョンの概要
| バージョン | ステータス | 主な変更点 |
|---|---|---|
| v3.x | 現行 (推奨) | Azure Storage SDK の更新、コスト効率の向上、v2.x からのアップグレードに対するコードの変更なし |
| v2.x | メンテナンス済み (セキュリティとバグの修正のみ) | 耐久性エンティティ、Durable HTTP |
| v1.x | サポート終了 2026 年 9 月 | Legacy |
v3.x の新機能
Microsoft.Azure。WebJobs.Extensions.DurableTask v3 パッケージ (以降のセクションでは WebJobs.Extensions.DurableTask と呼ばれます) は、現在推奨されているバージョンです。 v2.x からアップグレードする場合、コードを変更する必要はありません 。パッケージの依存関係を更新するだけで済みます。 この更新プログラムは、 インプロセス モデルを使用する Durable C# アプリを実行しているお客様にとって重大な変更と見なされます。
注
Durable Functions .NETアウトプロセス パッケージである Microsoft.Azure.Functions.Worker.Extensions.DurableTask は、基になるアセンブリとして Microsoft.Azure.WebJobs.Extensions.DurableTask を参照しています。 したがって、この更新プログラムは Microsoft.Azure.Functions.Worker.Extensions.DurableTask にも適用されます。バージョン 1.2.x 以降。
Azure Storage SDK の更新
既定では、Durable Functions Azure Storageをストレージ バックエンドとして使用して、アプリケーションの状態を永続的に保存します。 WebJobs.Extensions.DurableTask v3 では、Azure Storage バックエンドがアップグレードされ、Azure Storage SDK Azure の最新バージョンが使用されました。Data.Tables、Azure。Storage.Blobs、および Azure。Storage.Queues。 これらの SDK では、v2.x で使用される従来の Microsoft.Azure.Storage.* パッケージと比較して、マネージド ID のサポートが強化され、パフォーマンスが向上し、データ処理が効率的になり、セキュリティが向上します。
コスト効率の向上 (Azure Storage プロバイダー向け)
Azure Storage バックエンドでは、パーティション マネージャーはワーカー間で partitions/control キューを分散します。 WebJobs.Extensions.DurableTask v3 パッケージでは、既定で Partition Manager V3 が使用されます。これは、Azure テーブルを利用して、Azure Blob リースではなくパーティションの割り当てを管理する新しい設計です。 この設計により、デバッグを容易にしながら、ストレージ コストを大幅に削減できます。 Partition Manager V3 を使用すると、という名前のPartitionsがストレージ アカウントに作成されるため、パーティション情報を簡単に確認できます。
Azure Functions v1 ランタイムのサポートを削除しました
WebJobs.Extensions.DurableTask v3 では、Azure Functions ランタイムのバージョン 1.x がサポートされなくなりました。サポートは、September 2026 で終了するようにスケジュールされています。 Functions ランタイム v1 を使用する必要がある場合は、v2.11.0 より前の Durable Functions 拡張機能バージョンを使用してください。 スケジュールされたサポートが終了すると、Durable Functionsはランタイム v1 のサポートも削除されることに注意してください。
.NET ランタイム ターゲットの更新
WebJobs.Extensions.DurableTask v3 は、ターゲット ランタイムを .NET Core 3.1 から .NET 6 に更新し、最新の.NET機能とライブラリとのパフォーマンスの向上と互換性の強化を提供します。 この更新プログラムは、Azure Functions拡張機能バンドルの将来のリリースに合わせて調整されます。
v2.x から v3.x に移行する
v2.x から v3.x への移行にはコードの変更は必要ありません。新しい機能の使用を開始するために依存関係を更新するだけです。
- インプロセス モデル:Microsoft.Azure.WebJobs.Extensions.DurableTask バージョン 3.0.0 以降に更新してください。
- アイソレーテッド ワーカー モデル:Microsoft.Azure.Functions.Worker.Extensions.DurableTask バージョン 1.2.0 以降に更新してください。
Azure Functions拡張機能バンドル バージョン 4.22.0 以降に更新します。
互換性のダウングレード (v3.x から v2.x)
WebJobs.Extensions.DurableTask v3 では、v2 (UTF-8) と比較して、Azure Storage SDK (Base64) に対して異なるテキスト エンコードが使用されます。 v3.x から v2.x に戻す必要がある場合は、下位互換性を確保するために、次の最小バージョンを使用します。
4.22.0 より前の拡張機能バンドル バージョンに戻します。
v2.x のサポートとメンテナンス
WebJobs.Extensions.DurableTask v2.x は引き続きセキュリティ更新プログラムとバグ修正プログラムを受け取り、既存のアプリケーションの安全性と安定性を維持します。 ただし、すべての新機能と拡張機能は、v3.x にのみ追加されます。 このため、最新の機能と継続的な機能強化を利用するには、できるだけ早く WebJobs.Extensions.DurableTask v3 にアップグレードする必要があります。
v2.x で導入された機能
サポートされているすべての言語で、Durable Functions 2.x 以降で次の機能を使用できます。
注
このセクションの.NETインプロセス API の詳細は、分離されたワーカー モデルには適用されません。 分離されたワーカー ガイダンスについては、分離されたプロセスの概要Durable Functionsを参照してください。
永続エンティティ
Durable Functionsでは、エンティティをサポートし、durable エンティティと呼ばれる小さな状態を読み取って更新します。 オーケストレーター関数と同様に、エンティティ関数は特殊なトリガーの種類である エンティティ トリガーを持つ関数です。 オーケストレーター関数とは異なり、エンティティ関数には特定のコード制約はありません。 また、エンティティ関数では、制御フローを介して状態を表す暗黙的ではなく、明示的に状態が管理されます。
詳細については、 永続エンティティ に関する記事を参照してください。
堅牢なHTTP
Durable Functionsには、Durable HTTP 機能が含まれており、次のことが可能です。
- オーケストレーション関数から HTTP API を直接呼び出します (いくつかの制限事項が記載されています)。
- クライアント側の HTTP 202 状態の自動ポーリングを実装します。
- Azure マネージド ID の組み込みサポートを使用します。
詳細については、 HTTP 機能 に関する記事を参照してください。
1.x から 2.x に移行する
Important
Azure Functions ランタイムのバージョン 1.x は、September 2026 でサポート終了になります。 まだ v1.x を使用している場合は、すぐに移行を計画してください。
このセクションでは、既存のバージョン 1.x Durable Functionsをバージョン 2.x に移行して新機能を利用する方法について説明します。
Durable Functions拡張機能をアップグレードする
Durable Functions バインド拡張機能の最新の 2.x バージョンをプロジェクトにインストールします。
Durable Functions 2.x は、Azure Functions 拡張バンドル のバージョン 2.x 以降で使用できます。
Durable FunctionsでのサポートPythonには、Durable Functions 2.x 以上が必要です。
プロジェクトで拡張機能バンドルのバージョンを更新するには、host.json を開き、バージョン 4.x (extensionBundle) を使用するように [4.*, 5.0.0) セクションを更新します。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Durable Functions 2.x は、Azure Functions 拡張バンドル のバージョン 2.x 以降で使用できます。
プロジェクトで拡張機能バンドルのバージョンを更新するには、host.json を開き、バージョン 4.x (extensionBundle) を使用するように [4.*, 5.0.0) セクションを更新します。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
注
拡張機能バンドルのバージョンを変更した後、Visual Studio Codeに正しいテンプレートが表示されない場合は、 Developer: Reload Window コマンド (Windows および Linux では Ctrl+ R、macOS では Command+R) を実行してウィンドウを再読み込みします。
Durable Functions 2.x は、Azure Functions 拡張バンドル のバージョン 2.x 以降で使用できます。
プロジェクトで拡張機能バンドルのバージョンを更新するには、host.json を開き、バージョン 4.x (extensionBundle) を使用するように [4.*, 5.0.0) セクションを更新します。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
.NET プロジェクトを更新して、最新バージョンの Durable Functions バインド拡張機能を使用します。
詳細については、「Register Azure Functions バインド拡張機能を参照してください。
Durable Functions コードを更新する
Durable Functions 2.x では、いくつかの破壊的変更が導入されています。 Durable Functions 1.x アプリケーションは、コードを変更せずに Durable Functions 2.x と互換性がありません。 このセクションでは、バージョン 1.x 関数を 2.x にアップグレードするときに行う必要がある変更の一部を示します。
Host.json スキーマ
Durable Functions 2.x では、新しい host.json スキーマが使用されます。 1.x からの主な変更点は次のとおりです。
-
"storageProvider"(および"azureStorage"サブセクション) を使用してストレージ固有の構成を行います。 -
"tracing"トレースおよびログ記録の設定。 -
"notifications"(および"eventGrid"サブセクション) を使用して Event Grid 通知を構成します。
詳細については、Durable Functions host.json リファレンス ドキュメントを参照してください。
既定のタスク ハブ名の変更
バージョン 1.x では、タスク ハブ名が host.jsonで指定されていない場合、既定では "DurableFunctionsHub" に設定されていました。 バージョン 2.x では、既定のタスク ハブ名は関数アプリの名前から派生するようになりました。 このため、2.x にアップグレードするときにタスク ハブ名を指定していない場合、コードは新しいタスク ハブで動作し、実行中のすべてのオーケストレーションでアプリケーションが処理されなくなります。 この問題を回避するには、タスク ハブ名を v1.x の既定の "DurableFunctionsHub" に明示的に設定するか、フライト内オーケストレーションの破壊的変更を処理する方法の詳細については、 ダウンタイムなしのデプロイ ガイダンス に従ってください。
Durable Functionsでのパブリック インターフェイスの変更
バージョン 1.x では、Durable Functionsでサポートされているさまざまな context オブジェクトには、単体テストで使用するための抽象基本クラスがあります。 Durable Functions 2.x の一部として、これらの抽象基底クラスはインターフェイスに置き換えられます。
次の表は、主な変更点を表しています。
| 1.x | 2.x |
|---|---|
DurableOrchestrationClientBase |
IDurableOrchestrationClient または IDurableClient |
DurableOrchestrationContext または DurableOrchestrationContextBase |
IDurableOrchestrationContext |
DurableActivityContext または DurableActivityContextBase |
IDurableActivityContext |
OrchestrationClientAttribute |
DurableClientAttribute |
抽象基底クラスに仮想メソッドが含まれている場合、これらの仮想メソッドは、 DurableContextExtensionsで定義されている拡張メソッドに置き換えられました。
function.json の変更
Durable Functions 1.x では、オーケストレーション クライアント バインドは typeorchestrationClient を使用します。 バージョン 2.x では、代わりに durableClient が使用されます。
イベント生成の変更点
Durable Functions 1.x では、raise イベント API を呼び出し、存在しないインスタンスを指定すると、サイレント エラーが発生しました。 2.x 以降では、存在しないオーケストレーションにイベントを発生させると、例外が発生します。