分離されたワーカー モデルと Azure Functions 上の .NET のインプロセス モデルの違い

.NET 関数には、次の 2 つの実行モデルがあります。

実行モデル 説明
分離ワーカー モデル 関数コードは、別の .NET ワーカー プロセスで実行されます。 .NET と .NET Framework のサポートされているバージョンで使います。 詳細については、.NET 分離ワーカー プロセス関数の開発に関する記事を参照してください。
インプロセス モデル 関数コードは、Functions ホスト プロセスと同じプロセスで実行されます。 .NET の長期サポート (LTS) バージョンのみをサポートします。 詳細については、.NET クラス ライブラリ関数の開発に関する記事を参照してください。

この記事では、2 つのモデル間の機能と動作の違いの現在の状態について説明します。 インプロセス モデルから分離ワーカー モデルに移行するには、「.NET アプリをインプロセス モデルから分離ワーカー モデルに移行する」を参照してください。

実行モードの比較テーブル

次の表を使用して、2 つのモデル間の特徴と機能の違いを比較します。

機能/動作 分離ワーカー プロセス インプロセス3
サポートされている .NET バージョン 長期サポート (LTS) バージョン、
標準期間サポート (STS) バージョン、
.NET Framework
長期サポート (LTS) バージョン6
コア パッケージ Microsoft.Azure.Functions.Worker
Microsoft.Azure.Functions.Worker.Sdk
Microsoft.NET.Sdk.Functions
バインディング拡張機能パッケージ Microsoft.Azure.Functions.Worker.Extensions.* Microsoft.Azure.WebJobs.Extensions.*
Durable Functions サポートあり サポートあり
バインディングによって公開されるモデルの型 単純型
JSON シリアル化可能な型
配列/列挙型
サービス SDK の種類4
単純型
JSON シリアル化可能な
配列/列挙型
サービス SDK の種類4
HTTP トリガー モデルの型 HttpRequestData / HttpResponseData
[HttpRequest] / [IActionResult] ([ASP.NET Core 統合] を使用)5
HttpRequest / IActionResult5
HttpRequestMessage / HttpResponseMessage
出力バインディングのインタラクション 次の値を使用して、展開されたモデルの値を返します。
‐ 1 つまたは複数の出力
- 出力の配列
戻り値 (単一出力のみ)、
out パラメーター、
IAsyncCollector
命令型バインディング1 サポートされていません - 代わりに SDK の種類を直接操作します サポートあり
依存関係の挿入 サポート対象 (.NET エコシステムと一貫性のある改善されたモデル) サポートあり
ミドルウェア サポートあり サポートされていません
Logging FunctionContext から、または依存関係の挿入により取得した ILogger<T>/ILogger ILogger が関数に渡される
依存関係の挿入による ILogger<T>
Application Insights の依存関係 サポートあり サポートあり
キャンセル トークン サポートあり サポートあり
コールド スタート時間2 構成可能な最適化 最適化済み
ReadyToRun サポートあり サポートあり

1 実行時に決定されたパラメーターを使用してサービスとやり取りする必要がある場合は、命令型バインディングを使用するよりも、対応するサービス SDK を直接使用することをお勧めします。 SDK はより簡潔で、より多くのシナリオをカバーすることができ、エラー処理やデバッグの目的にも適しています。 この推奨事項は、両方のモデルに適用されます。

2 Windows で一部の .NET プレビュー バージョンを使用する場合、プレビュー フレームワークの Just-In-Time 読み込みが原因で、コールド スタート時間がさらなる影響を受ける可能性があります。 この影響は、インプロセス モデルとアウトプロセス モデルの両方に当てはまりますが、異なるバージョン間で比較すると違いが顕著になる可能性があります。 このプレビュー バージョンの遅延は、Linux プランでは生じません。

3 C# スクリプト関数もインプロセスで実行され、インプロセス クラス ライブラリ関数と同じライブラリを使用します。 詳細については、Azure Functions C# スクリプト (.csx) 開発者向けリファレンスを参照してください。

4サービス SDK の型には、BlobClient などの Azure SDK for .NET の型が含まれます。

5 .NET Framework では、ASP.NET Core がサポートされていません。

6 .NET 8 はインプロセス モデルではまだサポートされていませんが、分離ワーカー モデルでは使用できます。 インプロセス モデルの今後のオプションを含む .NET 8 プランの詳細については、Azure Functions ロードマップの更新の投稿を参照してください。

サポートされているバージョン

Functions ランタイムの各バージョンでは、.NET の特定のバージョンがサポートされています。 Functions のバージョンの詳細については、「Azure Functions ランタイム バージョンの概要」を参照してください。 バージョンのサポートは、関数がインプロセスで実行されるか、分離ワーカー プロセスで実行されるかによっても異なります。

Note

関数アプリで使用される Functions ランタイム バージョンを変更する方法については、「現在のランタイム バージョンの表示と更新」を参照してください。

次の表は、特定のバージョンの Functions と共に使用できる最上位レベルの .NET と .NET Framework を示しています。

Functions ランタイムのバージョン 分離ワーカー プロセス
(.NET 分離)
インプロセス
(.NET クラス ライブラリ)
Functions 4.x .NET 8.0
.NET 7.01
.NET 6.02
.NET Framework 4.83
.NET 6.02
Functions 4.x1 該当なし .NET Framework 4.8

1 .NET 7 は 2024 年 5 月 14 日に公式サポート終了となります。
2 .NET 6 は 2024 年 11 月 12 日に公式サポート終了となります。
3 ビルド プロセスには .NET 6 SDK も必要です。
4 Azure Functions ランタイムのバージョン 1.x のサポートは 2026 年 9 月 14 日に終了します。 詳細については、こちらのサポートに関するお知らせを参照してください。 引き続き完全なサポートを受けるには、アプリをバージョン 4.x に移行する必要があります。

特定の古いマイナー バージョンの削除など、Azure Functions リリースに関する最新のニュースについては、Azure App Service のお知らせを閲覧してください。

次のステップ