次の方法で共有


Durable Functions バージョンの概要

Durable Functions は、Azure Functions および Azure WebJobs の拡張機能であり、サーバーレス環境でステートフル関数を記述できます。 この拡張機能は状態、チェックポイント、再起動を管理します。 Durable Functionsにまだ慣れていない場合は、overview のドキュメントを参照してください。

マイクロソフト。Azure。WebJobs.Extensions.DurableTask v3.x

このセクションでは、新しい Microsoft.Azure.WebJobs.Extensions.DurableTask v3 パッケージ (後続のセクションでは WebJobs.Extensions.DurableTask と呼ばれます) を紹介し、その更新と変更の詳細を説明します。 この更新プログラムは、 インプロセス モデルを使用する 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.TablesAzure。Storage.Blobs、および Azure。Storage.Queues。 新しいAzure Storage SDK のセキュリティが強化され、マネージド ID のサポートが強化されました。 また、パフォーマンスの向上、より効率的なデータ処理、およびその他の最新のストレージ機能も提供します。

Azure Storage バックエンドのコスト効率の向上

Azure Storage バックエンドでは、パーティション マネージャーはワーカー間で partitions/control キューを分散します。 WebJobs.Extensions.DurableTask v3 パッケージでは、既定で Partition Manager V3 が使用されます。これは、Azure テーブルを利用して、Azure Blob リースではなくパーティションの割り当てを管理する新しい設計です。 この設計により、デバッグを容易にしながら、ストレージ コストを大幅に削減できます。 Partition Manager V3 を使用すると、という名前のがストレージ アカウントに作成されるため、パーティション情報を簡単に確認できます。

Functions v1 ランタイムのサポートを削除しました

WebJobs.Extensions.DurableTask v3 では、Azure Functions ランタイムのバージョン 1.x がサポートされなくなりました。サポートは、September 2026 で終了するようにスケジュールされています。 Functions ランタイム v1 を使用する必要がある場合は、v2.11.0 より前の Durable Functions 拡張機能バージョンを使用してください。 スケジュールされたサポートが終了すると、Durable Functionsはランタイム v1 のサポートも削除されることに注意してください。

.NET Framework Update

WebJobs.Extensions.DurableTask v3 は、.NET Core 3.1 から .NET 6 に.NET フレームワークを更新し、最新の.NET機能とライブラリとのパフォーマンスの向上と互換性の強化を提供します。 この更新プログラムは、Azure Functions拡張機能バンドルの将来のリリースに合わせて調整されます。

WebJobs.Extensions.DurableTask v2.x から v3.x への移行

WebJobs.Extensions.DurableTask v2.x から v3.x への移行は、変更がバックグラウンドで行われるので、コードを変更する必要なく簡単に行うように設計されています。 v3.x の新機能と機能強化を利用し始めるために、依存関係を更新するだけです。

WebJobs.Extensions.DurableTask v3 は最新バージョンの Azure Storage SDK を使用します。これは、v2 (UTF-8) で使用されるテキスト エンコード (Base64) とは異なります。 下位互換性を確保するために v3.x から v2.x にダウングレードする必要がある場合は、少なくとも v2.13.5 を使用します。 Microsoft.Azure.Functions.Worker.Extensions.DurableTask を使用する .NET のプロセス外ユーザーは、v1.2.x 以降のバージョンから元に戻す必要がある場合、v1.1.5 以降にダウングレードしてください。

v2.x のサポートとメンテナンス

WebJobs.Extensions.DurableTask v2.x は引き続きセキュリティ更新プログラムとバグ修正プログラムを受け取り、既存のアプリケーションの安全性と安定性を維持します。 ただし、すべての新機能と拡張機能は、v3.x にのみ追加されます。 このため、最新の機能と継続的な機能強化を利用するには、できるだけ早く WebJobs.Extensions.DurableTask v3 にアップグレードする必要があります。

Microsoft の新機能。Azure。WebJobs.Extensions.DurableTask v2.x

このセクションでは、バージョン 2.x で追加されるDurable Functionsの機能について説明します。

このセクションは、dotnet 分離ワーカーのDurable Functionsには適用されません。 詳細については、 非消耗品関数分離プロセスの概要を参照してください。

持続エンティティ

Durable Functions 2.x では、新しい entity 関数 概念が導入されました。

エンティティ関数では、"持続エンティティ" と呼ばれる小さい状態の読み取りと更新のための操作が定義されています。 オーケストレーター関数と同様、エンティティ関数は特殊なトリガー型である "エンティティ トリガー" を含む関数です。 オーケストレーター関数とは異なり、エンティティ関数には特定のコード制約はありません。 また、エンティティ関数では、制御フローを介して状態を表す暗黙的ではなく、明示的に状態が管理されます。

詳細については、 永続エンティティ に関する記事を参照してください。

堅牢なHTTP

Durable Functions 2.x では、次のことが可能な新しい Durable HTTP 機能が導入されました。

  • オーケストレーション関数から HTTP API を直接呼び出します (いくつかの制限事項が記載されています)。
  • クライアント側の HTTP 202 状態の自動ポーリングを実装します。
  • Azure マネージド ID の組み込みサポート。

詳細については、 HTTP 機能 に関する記事を参照してください。

1.x から 2.x に移行する

このセクションでは、既存のバージョン 1.x Durable Functionsをバージョン 2.x に移行して新機能を利用する方法について説明します。

拡張機能をアップグレードする

Durable Functions バインド拡張機能の最新の 2.x バージョンをプロジェクトにインストールします。

JavaScript、Python、PowerShell

Durable Functions 2.x は、Azure Functions 拡張バンドル のバージョン 2.x 以降で使用できます。

Durable FunctionsでのサポートPythonには、Durable Functions 2.x 以上が必要です。

プロジェクトで拡張機能バンドルのバージョンを更新するには、host.json を開き、バージョン 4.x () を使用するように セクションを更新します。

{
    "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) を実行してウィンドウを再読み込みします。

Java

Durable Functions 2.x は、Azure Functions 拡張機能バンドル のバージョン 4.x 以降で使用できます。 Java関数を実行するには、Azure Functions 4.0 ランタイムを使用する必要があります。

プロジェクトで拡張機能バンドルのバージョンを更新するには、host.json を開き、バージョン 4.x () を使用するように セクションを更新します。

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

.NET

.NET プロジェクトを更新して、最新バージョンの Durable Functions バインド拡張機能を使用します。

詳細については、「Register Azure 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 からの主な変更点は次のとおりです。

  • (および サブセクション) を使用してストレージ固有の構成を行います。
  • トレースとログの構成用の 。
  • (および サブセクション) を使用して Event Grid 通知を構成します。

詳細については、Durable Functions host.json リファレンス ドキュメントを参照してください。

既定のタスク ハブ名の変更

バージョン 1.x では、タスク ハブ名が host.jsonで指定されていない場合、既定では "DurableFunctionsHub" に設定されていました。 バージョン 2.x では、既定のタスク ハブ名は関数アプリの名前から派生するようになりました。 このため、2.x にアップグレードするときにタスク ハブ名を指定していない場合、コードは新しいタスク ハブで動作し、実行中のすべてのオーケストレーションでアプリケーションが処理されなくなります。 この問題を回避するには、タスク ハブ名を v1.x の既定の "DurableFunctionsHub" に明示的に設定するか、フライト内オーケストレーションの破壊的変更を処理する方法の詳細については、 ダウンタイムなしのデプロイ ガイダンス に従ってください。

パブリック インターフェイスの変更 (.NETのみ)

バージョン 1.x では、Durable Functionsでサポートされているさまざまな context オブジェクトには、単体テストで使用するための抽象基本クラスがあります。 Durable Functions 2.x の一部として、これらの抽象基底クラスはインターフェイスに置き換えられます。

次の表は、主な変更点を表しています。

1.x 2.x
DurableOrchestrationClientBase または
または IDurableOrchestrationContext
または IDurableActivityContext
OrchestrationClientAttribute DurableClientAttribute

抽象基底クラスに仮想メソッドが含まれている場合、これらの仮想メソッドは、 で定義されている拡張メソッドに置き換えられました。

function.json の変更

Durable Functions 1.x では、オーケストレーション クライアント バインドは typeorchestrationClient を使用します。 バージョン 2.x では、代わりに が使用されます。

イベント生成の変更点

Durable Functions 1.x では、raise イベント API を呼び出し、存在しないインスタンスを指定すると、サイレント エラーが発生しました。 2.x 以降では、存在しないオーケストレーションにイベントを発生させると、例外が発生します。