この記事では、.NET分離ワーカーのDurable Functionsの概要について説明します。 分離された worker を使用すると、Azure Functions ホストとは異なる.NET バージョンでDurable Functions アプリを実行できます。
.NET分離ワーカーでDurable Functionsを使用する理由
このモデルを使用すると、Azure Functions .NETの分離されたワーカー プロセスに付属するすべての大きな利点を得ることができます。 詳細については、「 分離ワーカー モデルの利点」を参照してください。 さらに、この新しい SDK には、 いくつかの新機能が含まれています。
インプロセスDurable Functionsの機能向上
- オーケストレーション入力は直接挿入できます。
MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, T input) - 厳密に型指定された呼び出しとクラスベースのアクティビティとオーケストレーションのサポート (注: プレビュー段階)。詳細については、「 ソース ジェネレーターとクラスベースのアクティビティとオーケストレーション」を参照してください)。
- さらに、Azure Functions .NET分離ワーカーのすべての利点。
ソース ジェネレーターとクラスベースのアクティビティとオーケストレーション
要件: プロジェクトに <PackageReference Include="Microsoft.DurableTask.Generators" Version="1.0.0" /> を追加します。
ソース ジェネレーター パッケージを追加すると、次の 2 つの新機能にアクセスできます。
- クラスベースのアクティビティとオーケストレーション、Durable Functionsを記述する別の方法です。 "関数ベース" の代わりに、Durable SDK から型を継承する厳密に型指定されたクラスを記述します。
- サブ オーケストレーションとアクティビティを呼び出すための厳密に型指定された拡張メソッド。 これらの拡張メソッドは、"関数ベースの" アクティビティとオーケストレーションからも使用できます。
関数ベースの例
public static class MyFunctions
{
[Function(nameof(MyActivity))]
public static async Task<string> MyActivity([ActivityTrigger] string input)
{
// implementation
}
[Function(nameof(MyOrchestration))]
public static async Task<string> MyOrchestration([OrchestrationTrigger] TaskOrchestrationContext context, string input)
{
// implementation
return await context.CallActivityAsync(nameof(MyActivity), input);
}
}
クラスベースの例
[Function(nameof(MyOrchestration))]
public static async Task<string> MyOrchestration(
[OrchestrationTrigger] TaskOrchestrationContext context)
{
string input = context.GetInput<string>()!;
return await context.CallActivityAsync<string>(nameof(MyActivity), input);
}
[Function(nameof(MyActivity))]
public static string MyActivity([ActivityTrigger] string input)
{
return $"Processed: {input}";
}
持続エンティティ
永続エンティティは、.NET 分離ワーカーでサポートされています。 詳細については、 開発者ガイドを参照してください。
移行ガイド
Durable Functions アプリをインプロセス モデルから.NET分離ワーカーに移行するには、「インプロセスから分離ワーカー モデルへの移行を参照してください。 このガイドでは、プロジェクトのセットアップ、パッケージ参照、名前空間の変更、API マッピング、動作の違い、移行に関する一般的な問題について説明します。